Язык:
Русский
English
Fail (процедура)
Объявление
Procedure Fail;
Режим
Real, Protected
Замечания
Процедура Fail, вызванная внутри конструктора заставляет его освободить динамический объект, который он только что распределил. Fail вызывается только в том случае, если одна из операций конструктора терпит неудачу.
Смотри также
Пример
Язык:
Русский
English
{Fail.PAS}
{ Пример программы для процедуры Fail }
{$F+}
function HeapFunc(Size : Word) : Integer;
begin
HeapFunc := 1; { Возвращает Nil, если вне кучи }
end;
{$F-}
type
CharPtr = ^Char;
BigString = object { Хранит большие строки }
Len : Word;
Txt : CharPtr;
constructor Init(Size : Word; Contents : CharPtr);
procedure Show;
...
destructor Done;
end;
constructor BigString.Init(Size : Word; Contents : CharPtr);
begin
Len := Size;
GetMem(Txt, Size);
if Txt = Nil then
Fail; { Выходим с сообщением об ошибке }
Move(Contents^, Txt^, Size);
end;
destructor BigString.Done;
begin
FreeMem(Txt, Len);
end;
function HeapFunc(Size : Word) : Integer;
begin
HeapFunc := 1; { Возвращает Nil, если вне кучи }
end;
{$F-}
type
CharPtr = ^Char;
BigString = object { Хранит большие строки }
Len : Word;
Txt : CharPtr;
constructor Init(Size : Word; Contents : CharPtr);
procedure Show;
...
destructor Done;
end;
constructor BigString.Init(Size : Word; Contents : CharPtr);
begin
Len := Size;
GetMem(Txt, Size);
if Txt = Nil then
Fail; { Выходим с сообщением об ошибке }
Move(Contents^, Txt^, Size);
end;
destructor BigString.Done;
begin
FreeMem(Txt, Len);
end;