Class-like records

Top  Previous  Next

New features since Delphi 7 > Class-like records

Since Delphi 7 the abilities of records have been expanded to more class-like structures with properties, methods and nested types. Here an example from

 

http://docwiki.embarcadero.com/RADStudio/Rio/en/Structured_Types_(Delphi)#Records_.28advanced.29

 

type

   TMyRecord = record

     type

       TInnerColorType = Integer;

     var

       Red: Integer;

     class var

       Blue: Integer;

     procedure printRed();

     constructor Create(val: Integer);

     property RedProperty: TInnerColorType read Red write Red;

     class property BlueProp: TInnerColorType read Blue write Blue;

 end;

 

implementation

 

 constructor TMyRecord.Create(val: Integer);

 begin

   Red := val;

 end;

 

 procedure TMyRecord.printRed;

 begin

   Writeln('Red: ', Red);

 end;

 

Delphi2Cpp II converts these new features for C++Builder to:

 

 

struct TMyRecord

{

  typedef int TInnerColorType;

  int Red;

  static int Blue;

  void __fastcall printRed();

  __fastcall TMyRecord(int val);

  __property TInnerColorType RedProperty = { read = Red, write = Red };

  /*static */__property TInnerColorType BlueProp = { read = Blue, write = Blue };

 

  TMyRecord() {}

};

 

 

---------------

 

 

int TMyRecord::Blue = 0;

 

__fastcall TMyRecord::TMyRecord(int val)

 : Red(val)

{

}

 

void __fastcall TMyRecord::printRed()

{

  { Write(L"Red: "); WriteLn(Red); };

}

 

 

And for other compilers it becomes:

 

 

struct TMyRecord

{

  typedef int TInnerColorType;

  int Red;

  static int Blue;

  void printRed();

  TMyRecord(int val);

  /*property RedProperty : TInnerColorType read Red write Red;*/

  TInnerColorType ReadPropertyRedProperty() { return Red;}

  void WritePropertyRedProperty(int Value){Red = Value;}

  /*property BlueProp : TInnerColorType read Blue write Blue;*/

  static TInnerColorType ReadPropertyBlueProp() { return Blue;}

  static void WritePropertyBlueProp(int Value){Blue = Value;}

  void InitMembers(){Red = 0;}

 

  TMyRecord() {InitMembers();}

};

 

---------------------

 

 

 int TMyRecord::Blue = 0;

 

TMyRecord::TMyRecord(int val)

 : Red(val)

{

}

 

void TMyRecord::printRed()

{

  { Write(L"Red: "); WriteLn(Red); };

}

 

 

 



This page belongs to the DelphiXE2Cpp11 Documentation

DelphiXE2Cpp11 home  Content