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;


  foo := 0;

  if i < 0  then



    foo := 1;





This page belongs to the Delphi2C# Documentation

Delphi2C# home  Content