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
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
Significant Software
22.01.2010
|
Diese Homepage ist aus einfachen Texten mit [Minimal Website ]generiert.
|
Minimal Website ist mit Hilfe des TextTransformers hergestellt.
|
Der TextTransformer ist gemacht mit dem Borland
CBuilder
|