texttransformer.jpg

There is no counterpart to class/record helpers in C++. However it is possible to translate Delphi code using class helpers to C++. This is demonstrated at the following example:

TStringsHelper = class Helper for TBase
private 
  function GetTheObject(const AString: String): TObject; 
  procedure SetTheObject(const AString: String; const Value: TObject); 
public 
  property ObjectFor[const AString : String]: TObject Read GetTheObject Write SetTheObject; 
end;

becomes with DelphiXE2Cpp11 for C++Builder to

class TStringsHelper
{
  public:
  TStringsHelper(TBase* xpClass) : m_pClass(xpClass) {}
private:
  TObject* __fastcall GetTheObject(const String& AString);
  void __fastcall SetTheObject(String& AString, TObject* Value);
public:
  __property TObject* ObjectFor[const String& AString] = { read = GetTheObject, write = SetTheObject };
private:
  TBase* m_pClass;
};

Of course, for other compilers than C++Builder the properties become setter and getter functions. If S is an instance of TBase, an assignment of a TObject like:

S.ObjectFor['a'] := Object;

becomes to:

TStringsHelper(s).ObjectFor[L"a"] = Object;


The trick is, that functions calls of the helper class are redirected to calls of the helped class inside of a local instance of the helper class. For example the setter method of TStringHelper might look like:


void __fastcall TStringsHelper::SetTheObject(String& AString, TObject* Value)
{
  int idx = 0;
  idx = m_pClass->IndexOf(AString);
  if(idx >- 1)
    m_pClass->Objects[idx] = Value;
}



   deutsch Deutsch

 

 
Latest News
02/07/22
Delphi2Cpp: Delphi 10.3 inline variables [more...]

09/09/21
Delphi2CB: has been relased [more...]



"Thanks for your great work, really appreciate the work you have done on zlib and compiling ... test case."


Mattewada, Udayabhaskar
Nokia India 02/01/2021




[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