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
|