Hi,
ich bin gerade dabei, ein c++ struct in Delphi zu übernehmen.
Jedoch scheitere ich gerade an dem union Teil. Soweit ich weiß, darf der "Variante Teil" nur am ende eines records stehen.
Da ich dieses Record für eine
DLL brauche, muss dies 1:1 zu dem c++ Beispiel stimmen, ich kann doch nicht einfach die Reihenfolge von dem Union ändern bzw. nach ganz unten schieben? Hat hier jemand einen Vorschlag?
C++ Code:
Code:
struct SDK_GPSConfig
{
SDK_HDRINFO size;
SDK_HDRINFO version;
const SDK_WCHAR_T* pDeviceName;
const SDK_WCHAR_T* pSimFileName;
const SDK_WCHAR_T* pLogFileName;
SDK_INT4 LogFileFormat;
SDK_INT4 baudRate;
SDK_UINT4 flags;
SDK_BOOL readOnly;
SDK_BOOL GNSTMCDevice;
const SDK_WCHAR_T* pDeviceName2;
const SDK_WCHAR_T* pSimFileName2;
const SDK_WCHAR_T* pLogFileName2;
SDK_INT4 minDirVelo;
union {
SDK_BOOL m_bCalcMissing;
SDK_BOOL bCalcMissing;
};
SDK_BOOL shortTimeExtrapolator;
SDK_BOOL useLocationDirectly;
};
Delphi Code (Mein Ansatz):
Code:
type SDK_GPSConfig=record
size: SDK_HDRINFO;
version: SDK_HDRINFO;
pDeviceName: ^SDK_WCHAR_T;
pSimFileName: ^SDK_WCHAR_T;
pLogFileName: ^SDK_WCHAR_T;
LogFileFormat: SDK_INT4;
baudRate: SDK_INT4;
flags: SDK_UINT4;
readOnly: SDK_BOOL;
GNSTMCDevice: SDK_BOOL;
pDeviceName2: ^SDK_WCHAR_T;
pSimFileName2: ^SDK_WCHAR_T;
pLogFileName2: ^SDK_WCHAR_T;
minDirVelo: SDK_INT4;
//union? case?
shortTimeExtrapolator: SDK_BOOL;
useLocationDirectly: SDK_BOOL;
end;