Procedures and functions

Top  Previous  Next

What is translated > Routines > Procedures and functions

 

Procedures are translated to void-functions

 

procedure foo;  ->  void foo();

 

 

The translation of functions is more complicated, because there aren't return-statements in Object-Pascal. Instead, the return value is assigned to a variable Result, which is implicitely declared in each function. In C++ this variable must be declared explicitly and returned at the end of the function. Also to the Exit-function has to be replaced by a return-statement in C++.

 

function foo(i : Integer) : bar;    ->     bar __fastcall foo ( int i ) 

begin                                      {                           

  Result := 0;                               bar result;               

  if i < 0  then                             result = 0;              

    EXIT                                     if ( i < 0 )              

  else                                         return result;          

    Result := 1;                             else                      

end;                                           result = 1;            

                                             return result;   

 

In addition, the function name itself acts as a special variable that holds the function’s return value, as does the predefined variable Result. So the same translation as above results from:

 

function foo(i : Integer) : bar;

begin 

  foo := 0;

  if i < 0  then

    EXIT

  else

    foo := 1;

end;

 

 

 



This page belongs to the Delphi2Cpp Documentation

Delphi2Cpp home  Content