texttransformer.jpg

In C++ gibt es kein Pendant zu den unterstürtzenden Klassen und Records in Delphi. Dennoch ist es mit Delphi2Cpp 2.x möglich Delphi Code, der unterstützende Klassen verwendet, automatisch nach C++ zu übersetzen. Dies wird im folgenden Beispiel demonstriert:


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;

wird für den C++Builder folgendermaßen übersetzt:


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;
};

Für andere Compiler als dem C++Builder werden die Properties zu Set- unf Get-Methoden. Wenn S eine Instanz von TBase ist, wird eine Zuweisung eines TObject's wie in:

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

zu:

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

Der Trick besteht darin, dass Aufrufe von Funktionen der unterstützenden Klasse umgeleitet werden an eine Instanz der unterstützten Klasse innerhalb der lokalen unterstützenden Klasse. Die Set-Methode von TStringHelper sieht dann z.B. folgendermaßen aus:


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



   english english

 

 
Letzte Neuigkeiten
28.10.24
Delphi2Cpp 2.5: in Groß- und Kleinschreibung mit Deklarationen übereinstimmende Symbolnamen [more...]
08/26/24
Delphi2Cpp 2.4: Aktualisiert auf RAD Studio 12.1 Athen [more...]



[aus Fallstudie...]

"Eine Meisterleistung -- Delphi2Cpp hat alle meine Erwartungen weit übertroffen."


Tony Hürlimann
virtual-optima 29.08.2011



"Ich muss mich nochmal für deinen Einsatz und die Qualität deiner Arbeit bedanken, das ist absolut überdurchschnittlich ..."


Gerald Ebner


 
Diese Homepage ist aus einfachen Texten mit [Minimal Website ]generiert.

Minimal Website
Minimal Website ist mit Hilfe des TextTransformers hergestellt.

TextTransformer
Der TextTransformer ist gemacht mit dem Borland CBuilder

  borland