Dieser Artikel kann veraltet sein: Aktuelle Dokumentation online (Englisch)
Reihenfolge von Typdefinitionen
In Delphi können Typen durch andere noch nidht definierte Typen definiert werden. In C++ kann ein Typ nur durch einen anderen Typ definiert werden, wenn dieser bereits definiert ist. Deshalb muss die Reihenfolger der Delphi Typdefinitionen bei der Übersetzung nach C++ zuweilen geändert werden.
Das folgende Beispiel ist der datei "ShellApi.pas" entnommen:
PSHFileOpStructA = ^TSHFileOpStructA; PSHFileOpStructW = ^TSHFileOpStructW; PSHFileOpStruct = PSHFileOpStructA; {$EXTERNALSYM _SHFILEOPSTRUCTA} _SHFILEOPSTRUCTA = packed record Wnd: HWND; wFunc: UINT; pFrom: PAnsiChar; pTo: PAnsiChar; fFlags: FILEOP_FLAGS; fAnyOperationsAborted: BOOL; hNameMappings: Pointer; lpszProgressTitle: PAnsiChar; { only used if FOF_SIMPLEPROGRESS } end; {$EXTERNALSYM _SHFILEOPSTRUCTW} _SHFILEOPSTRUCTW = packed record Wnd: HWND; wFunc: UINT; pFrom: PWideChar; pTo: PWideChar; fFlags: FILEOP_FLAGS; fAnyOperationsAborted: BOOL; hNameMappings: Pointer; lpszProgressTitle: PWideChar; { only used if FOF_SIMPLEPROGRESS } end; {$EXTERNALSYM _SHFILEOPSTRUCT} _SHFILEOPSTRUCT = _SHFILEOPSTRUCTA; TSHFileOpStructA = _SHFILEOPSTRUCTA; TSHFileOpStructW = _SHFILEOPSTRUCTW; TSHFileOpStruct = TSHFileOpStructA; {$EXTERNALSYM SHFILEOPSTRUCTA} SHFILEOPSTRUCTA = _SHFILEOPSTRUCTA; {$EXTERNALSYM SHFILEOPSTRUCTW} SHFILEOPSTRUCTW = _SHFILEOPSTRUCTW; {$EXTERNALSYM SHFILEOPSTRUCT} SHFILEOPSTRUCT = SHFILEOPSTRUCTA;
Die wird übersetzt zu:
/*# waiting for definiens
typedef TSHFileOpStructA *PSHFileOpStructA;
*/ /*# waiting for definiens
typedef TSHFileOpStructW *PSHFileOpStructW;
*/ /*# waiting for definiens
typedef PSHFileOpStructA PSHFileOpStruct;
*/
/*$EXTERNALSYM _SHFILEOPSTRUCTA*/
#pragma pack(push, 1) struct _SHFILEOPSTRUCTA { HWND Wnd; UINT wFunc; PAnsiChar pFrom; PAnsiChar pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; void* hNameMappings; PAnsiChar lpszProgressTitle; /* only used if FOF_SIMPLEPROGRESS */ };
#pragma pack(pop); /*$EXTERNALSYM _SHFILEOPSTRUCTW*/
#pragma pack(push, 1) struct _SHFILEOPSTRUCTW { HWND Wnd; UINT wFunc; PWideChar pFrom; PWideChar pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; void* hNameMappings; PWideChar lpszProgressTitle; /* only used if FOF_SIMPLEPROGRESS */ };
#pragma pack(pop);
/*$EXTERNALSYM _SHFILEOPSTRUCT*/
typedef _SHFILEOPSTRUCTA _SHFILEOPSTRUCT; typedef TSHFileOpStructA *PSHFileOpStructA; typedef PSHFileOpStructA PSHFileOpStruct; typedef _SHFILEOPSTRUCTA TSHFileOpStructA; typedef TSHFileOpStructW *PSHFileOpStructW; typedef _SHFILEOPSTRUCTW TSHFileOpStructW; typedef TSHFileOpStructA TSHFileOpStruct; /*$EXTERNALSYM SHFILEOPSTRUCTA*/ typedef _SHFILEOPSTRUCTA SHFILEOPSTRUCTA; /*$EXTERNALSYM SHFILEOPSTRUCTW*/ typedef _SHFILEOPSTRUCTW SHFILEOPSTRUCTW; /*$EXTERNALSYM SHFILEOPSTRUCT*/ typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT;
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
|