{Переменная Chi и процедура F2 доступны для объектов
любых классов и для других модулей, но со ссылкой
на объект}
Chi:char;
procedure F2(Ch:char);
end;
var
Forml: TForml;
{Переменная Ch2 и процедура F3 доступны для объектов
любых классов и для других модулей}
Ch2:char;
procedure F3(Ch:char);
{$R *.DFM)
uses unit2;
(Переменная Ch3 и процедура F4 доступны только внутри
данного модуля}
var Ch3:char;
procedure F4(Ch:char);
begin
…
end;
procedure TForml.ButtonlClick(Sender: TObject);
(Переменная Ch4 и процедура F5 доступны только внутри
данной процедуры)
var Ch4:char;
procedure F5(Ch:char);
begin
…
end;
begin
…
end;
Язык Object Pascal позволяет обрабатывать исключительные ситуации, выделив в составе блока кода:
· Собственно реализацию алгоритма.
· Обработчик исключительной ситуации.
· Заключительную часть, выполняющую необходимые действия по корректному завершению вне зависимости от того, возникали или нет исключительная ситуация.
Рассмотрим 2 примера:
1:
var
f:file;
begin
AssingnFle(f,’1.txt’);
try
reset(f);
DoSomething;
finally
close(f);
end;
end;
2:
procedure GetValue (text : string):integer;
const DefValue : integer = 0;
begin
try
result:= StrToInt(text);
except
on EConvertError do Result := DefValue;
end;
end;
Блок, ограниченный зарезервированными словами try и end и содержащий одно из зарезервированных слов finally или except, называется защищенным блоком кода. Существует 2 основных вида таких блоков: Первый вид соответствует первому примеру. Следующие за try операторы выполняются в обычном порядке. Если за это время не произошло исключительных ситуаций (ИС), то выполняются операторы, которые стоят после finally. Если между try и finally произошла ИС, то управление немедленно передается на операторы после finally, их функция – освобождение ресурсов.
Второй вид блока try применяется для реакции на конкретный тип ситуации. Его синтаксис следующий:
try
<оператор>
<оператор>
except
on Exception1 do <оператор>
on Exception2 do <оператор>
…
else
<оператор> {обработчик ИС по умолчанию}
В случае отсутствия ИС выполняется только блок try. Секция except получает управление в случае возникновения ИС. При этом директивы on..do просматриваются последовательно. Если возникла ситуация, не определенная ни одной из директив, то вызывается обработчик ИС по умолчанию.