Оператор TRY и отладка Обработка исключительных ситуаций с помощью оператора TRY. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператор TRY и отладка Обработка исключительных ситуаций с помощью оператора TRY.



Оператор try..._try

try последовательность команд _try – защищенный блок команд с выходом из блока при возникновении исключительной ситуации (ошибки). Такой ситуацией может быть, например, деление на ноль, с возможностью анализа ошибки в какой-либо последующей команде. При возникновении ошибки внутри блока try происходит выход из последовательности команд (без выдачи на экран стандартного сообщения об ошибке), после чего продолжается выполнение команд, стоящих после команды try. Пример:

try a=b/c; b=b* ln (c); _try;

Если требуется проводить проверку на возникновение, это следует делать в обработчике исключения onException.

Оператор try...onException..._try

try последовательность команд onException последовательность команд _try

Такая форма команды в случае возникновения любого исключения в блоке try выполняет команды блока onException. Если же ошибки не было, то команды блока onException не выполняются.
Пример:

try a=b/c; b=b* ln (c); onException if exception.id=16 and exception.position>5 => Form (ErrForm1).activate(); break (); else Form (ErrForm2).activate(); break (); _if_try;

В этом примере исключительная ситуация может возникать в случае ошибки, например, при делении на ноль или при попытке вычислить логарифм отрицательного числа. Оператор break() в области onException служит для прекращения цикла, в который, возможно, вложен блок try.

Информация о кодовом номере исключения содержится в свойстве exception.id объекта exception, принадлежащего классу Exception. Свойство exception.position дает позицию символа интерпретируемой строки в блоке try, в которой возникла ошибка.

Объект exception сохраняется только во время выполнения обработчика onException, и каждому обработчику соответствует свой объект. Вне обработчика попытка вызова любого свойства объекта exception приведет к диагностике ошибки. Если в обработчике onException имеется блок защищенного кода try, у которого имеется свой собственный обработчик onException, с ним будет связан независимый объект exception, а после выхода из второго обработчика снова станет доступен объект exception первого обработчика.

Типы файлов. Операторы последовательного метода доступа.

Рассмотрим типы файлов которые используются в среде программирования Delphi

· .dpr - файл проекта Delphi. Это первичный файл, в котором содержаться ссилки на другие модули программы и связывает формы с соответствующими модулями.

· .pas - файл который содержит исходный код программы.

· .dfm - файл содержит свойства формы, описание и свойства объектов, которые расположены на форме.

· .dcu - скомпилированный вариант .pas файла.

· .res - файл, который содержит ресурсы. Данные в нем хранятся в двоичном виде. Он включает также в себя информацию о приложении. По умолчанию, Delphi создает новый .res - файл с именем проекта при каждой компиляции. Так что, если нужно добавить какие то ресурсы в программу (звуки, графику и т.д.), то нужно загружать их в файл ресурса из названием которое отличается от названия проекта.

· .dof - файл содержит настройки для текущего проекта (настройки компилятора, каталоги...)

· .dem - в данном типе файлов сохраняются некоторые стандартные, привязанные к стране, форматы компонента TMaskEdit.

· .bpg - Файл содержит описание групп проектов. (При открытие этого типа файл - могут подгружаться несколько проектов одновременно).

· .dsk - файл содержит настройки относительно состояния проекта (координаты положение окон проекта, открытые окна). Он подобен файлу с расширением .dof. Но содержит другие настройки.

· .dpk - файл пакета (аналогично .dpr -файлу. В основном используется для установки новых компонент).

· .dcp - файл содержит информацию о символах и дополнительных заголовках, требуемых IDE. Для сборки (build) проект, IDE должен иметь доступ к этому файлу.

· .bpl - это выполняемый runtime -пакет фактически является DLL файлом.

· .dci - файл содержит как стандартные, так и определенные пользователем шаблоны кода, используемых в IDE.

· .dct - файлы данного типа содержат информацию об определенных пользователями шаблонах компонентов.

· .dro - файлы содержит информацию об объектном хранилище (Repository). Каждый пункт данного файла содержит специфическую информацию о каждом доступном элементе в хранилище объектов. Хранилище можно отредактировать только с помощью меню "Tools => Repository" в самом IDE.

· .dmt - данные "частные" бинарные файлы содержат встроенные и определенные пользователем шаблоны меню.

· .tlb - двоичные файлы библиотеки типов. Данные типы файлов обеспечивают информацией для идентификации типов объектов и интерфейсов, доступных в ActiveX сервере. Подобно модулю или заголовочному файлу, .tlb служит в качестве хранилища для необходимой символьной информации приложения.

· .ocx - типы файлов с таким расширением является специализированными DLL, которые содержит все или несколько функций, связанных с элементом управления ActiveX. Файлы с расширением .ocx задумывался как " обертка ", которая содержала бы сам объект, и средства для связи с другими объектами и серверами.

· .gdb - стандартные Interbase -файлы.

· .dbi - Файлі с таким расширением содержат информацию, необходимую для инициализации Database Explorer.

· .exe - Исполняемые файлы приложения. При компиляции (сборке) вашего проекта в результате получается приложение с именем данного проекта и с данным расширением.

· .dll - файлы DLL (англ. Dynamic-link library — динамически подключаемая библиотека) динамическая библиотека, позволяющая многократное применение различными программными приложениями. K DLL относятся также элементы управления ActiveX и драйверы. Формат файлов DLL придерживается тех же соглашений, что и формат исполняемых файлов, сочетая код, таблицы и ресурсы.

· .~dpr; .~pas; .~dfm - файлы резервных копий. Соответственно, резервные копии проектов, модулей, форм.

Особенности обработки текстовых файлов.

Копирование файлов

Для копирования файлов применяется функция CopyFile. Формат ее такой:

CopyFile(Исходный_файл,Записуемый_файл,Флаг_перезаписи);

где: Исходный_файл – полный путь и название файла, который копируется;

Записуемый_файл – полный путь и название файла, куда копируется исходный файл;

Флаг_перезаписи – будет или нет перезаписан файл, если таковой уже существует (true - не будет, false - будет перезаписан).

CopyFile является функцией, которая возвращает флаг успешной или нет операции копирования.

Например, следующая строка:

if not CopyFile('c:\command.com','c:\1.com',true) then ShowMessage('Ошибка копирования');

скопирует файл command.com в файл 1.com только в том случае, если последнего нет, в противном случае будет выдаваться сообщение об ошибке копирования.

Перемещение файлов

Для перемещения файлов применяется функция MoveFile. Она имеет следующий формат:

MoveFile(Исходный_файл,Записуемый_файл);

Ее параметры аналогичны вышерассмотренной команде за исключением отсутствия флага перезаписи.

Пример:

if not MoveFile('c:\1.com','c:\2.com') then ShowMessage('Ошибка перемещения');

Переименование файлов

Функция RenameFile

if not RenameFile('c:\2.com','c:\3.com') then ShowMessage('Ошибка переименования');

У всех вышесказанных командах параметры исходного и конечного файла имеет тип PChar. Это строковый тип с завершающимся нулем. Возможно, вы раньше слышали о таком формате строковых данных. В такую переменную можно занести строку очень большой длины. Ее размер ограничивается наличием нулевого байта в конце. Теоретически такая переменная может иметь бесконечный размер. На практике она ограничивается размерами выделяемой памяти для программы (2Гб).

Преобразование обычной строковой переменной, типа String в PChar производится функцией:

PChar(Строковая_переменная).

При этом, для команд файловых операций возможны объединение строк. Например:

procedure TForm1.Button1Click(Sender: TObject);

Var InDir,OutDir:String; // объявление строковых переменных

begin

InDir:='c:\1\'; // каталог исходных файлов

OutDir:='c:\2\'; // каталог записуемых файлов

CopyFile(PChar(InDir+'1.txt'),PChar(OutDir+'1.txt'),false);

CopyFile(PChar(InDir+'2.txt'),PChar(OutDir+'2.txt'),false);

end;

Здесь налицо операция соединения двух строковых переменных.

В итоге этой процедуры будет копирование файлов c:\1\1.txt и c:\1\2.txt в каталог c:\2. Файлы копируются под теми же именами.

Удаление файлов

Функция DeleteFile

if not DeleteFile('c:\3.com') then ShowMessage('Ошибка удаления');



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 271; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.39.55 (0.013 с.)