Thema: Delphi Union in Delphi

Einzelnen Beitrag anzeigen

Benutzerbild von dtpfl
dtpfl

Registriert seit: 19. Jan 2018
Ort: Bayern
20 Beiträge
 
Delphi 12 Athens
 
#1

Union in Delphi

  Alt 17. Nov 2021, 14:30
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;
  Mit Zitat antworten Zitat