[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] |
Exit current subroutine.
Source position: system.fpd line 43
procedure Exit( |
const X: TAnyType |
); |
Exit exits the current subroutine, and returns control to the calling routine. If invoked in the main program routine, exit stops the program. The optional argument X allows to specify a return value, in the case Exit is invoked in a function. The function result will then be equal to X.
In Object Pascal or Delphi modes, if the Exit statement is surrounded by one or more Try .. Finally constructs, the Finally blocks are executed, which means that if the finally blocks are used to free resources, then these resources will also be freed when Exit is called.
Note that although Exit is a compiler intrinsic (i.e. is treated specially) it is defined as an identifier in the system unit, hence it can be redefined.
None.
|
Stop program execution. |
Program Example21; { Program to demonstrate the Exit function. } Procedure DoAnExit (Yes : Boolean); { This procedure demonstrates the normal Exit } begin Writeln ('Hello from DoAnExit !'); If Yes then begin Writeln ('Bailing out early.'); exit; end; Writeln ('Continuing to the end.'); end; Function Positive (Which : Integer) : Boolean; { This function demonstrates the extra FPC feature of Exit : You can specify a return value for the function } begin if Which>0 then exit (True) else exit (False); end; begin { This call will go to the end } DoAnExit (False); { This call will bail out early } DoAnExit (True); if Positive (-1) then Writeln ('The compiler is nuts, -1 is not positive.') else Writeln ('The compiler is not so bad, -1 seems to be negative.'); end.
{ Example 121: Continue, break and exit are system procedures. They can be redefined } procedure continue; begin Writeln('Continue'); end; Procedure Exit; begin Writeln('exit'); end; Procedure Break; begin Writeln('Break'); end; begin Repeat Continue; Break; exit; Until True; end.