Процедура Fail

Объявление:

 Procedure Fail;

Замечания:
Процедура 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;

Пример программы: fail.pas

См. также: