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
|