Процедура Fail

Процедура 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;