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
08/15/10
Delphi2Cpp 1.3.3 Bug fixes and other small improvements [more...]

05/25/10
Delphi2Cpp 1.3.0 Developing in Delphi, compiling C++ [more...]


 
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