Процедура Fail, вызванная внутри конструктора заставляет его освободить динамический объект, который он только что распределил.
Объявление:
Procedure Fail;
Режим:
Real, Protected
Замечание:
Fail вызывается только в том случае, если одна из операций конструктора терпит неудачу.
Пример:
{Пример программы для процедуры 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;