Here we give a list of things which are possible in Free Pascal, but which didn't exist in Turbo Pascal or Delphi.
function a : longint;
begin a:=12; while a>4 do begin {...} end; end; |
The example above would work with TP, but the compiler would assume that the a>4 is a recursive call. To do a recursive call in this you must append () behind the function name:
function a : longint;
begin a:=12; { this is the recursive call } if a()>4 then begin {...} end; end; |
function a : longint;
begin a:=12; if a>4 then begin exit(a*67); {function result upon exit is a*67 } end; end; |
procedure DoSomething (a : longint);
begin {...} end; procedure DoSomething (a : real); begin {...} end; |
You can then call procedure DoSomething with an argument of type Longint or
Real.
This feature has the consequence that a previously declared function must always be de ned
with the header completely the same:
procedure x (v : longint); forward;
{...} procedure x;{ This will overload the previously declared x} begin {...} end; |
This construction will generate a compiler error, because the compiler didn't nd a de nition of procedure x (v : longint);. Instead you should de ne your procedure x as:
procedure x (v : longint);
{ This correctly defines the previously declared x} begin {...} end; |
(The -So (see page 5.1.5) switch disables overloading. When you use it, the above will compile, as in Turbo Pascal.