This article can be obsolete: Actual documentation online

Array of const


Arrays of const are similar to the open array parameters. The value of an array of const has to be represented by two values in C++: a pointer to a TVarRec and the Index of the last element of the array, which begins at the position which the pointer points to.


procedure foo(arr : array of const);

->

void __fastcall foo ( TVarRec* arr, const int Args_Size );


When such a functions is called, the macro ARRAYOFCONST is written into the C++ output. This macro is defined for the CBuilder C++ as:

#define ARRAYOFCONST(values) 
OpenArrayvalues, 
OpenArrayCountvalues.GetHigh()


Delphi2Cpp decides by the expected parameter type how the set argument is translated:


procedure foo(arr : array of const);
procedure bar(set : TCharSet);

foo(['hello', 'world']);
bar(['hello', 'world']);

->

#define test__0 (System::Set< AnsiString, 0, 255 >() 
  << AnsiString ( "hello" ) << AnsiString ( "world" ) )

void __fastcall foo ( TVarRec* arr, const int arr_size );
void __fastcall bar ( TStringSet set );

foo ( ARRAYOFCONST(( "hello", "world" )) );
bar ( test__0 );

If such a passed array is passed further to another function, then Delphi2Cpp takes care that the second parameter is also passed in the C++ code.

procedure foo(var arr: array of const);
begin
  bar( arr );
end;
->

void __fastcall foo ( TVarRec* arr, const int arr_size )
{
  bar ( arr, arr_size );
}


   deutsch Deutsch

 
Latest News
09/03/15
Delphi2Cpp 1.7.0 New translation options [more...]

01/30/12
Delphi2Cpp 1.6.3 Better construction of objects [more...]



"We successfully used your tool for migrating our code base to C++."


Roel Vliegen
magnaview 09/21/2015



[from case study...]

"A masterpiece -- Delphi2Cpp has exceeded all my expectations by far."


Tony Hürlimann
virtual-optima 08/20/2011



"First off, I have to say WOW! Delphi2Cpp is doing a *fantastic* job!"


Daniel Flower
linkrealms 01/15/2011


 
This website is generated from plain text with [Minimal Website ]

Minimal Website
Minimal Website is made with TextTransformer

TextTransformer
TextTransformer is made with Borland CBuilder

  borland