![]() |
Struktur übersetzen von C nach Delphi
Hallo zusammen, ich bin Anfänger und arbeite seit 2 Wochen mit Delphi.
Ich muss die unten stehende Struktur von C nach Delphi übersetzen. Ich hoffe mir kann jemand helfen, denn ich schaffe es nicht. Ich habe die Komentare auf der rechten Seite drin gelassen.
Code:
Einen Anfang habe ich schon gemacht, komm aber nicht mehr weiter sobald "union" kommt
typedef struct DPS_TASK_PARAMETERtag {
unsigned char bPlcMode; /* PLC mode */ unsigned short usWatchdogTime; /* Host watchdog time */ unsigned char abReserved1[3]; /* Do not modify */ unsigned short usIdentNumber; /* PROFIBUS Ident number (if set to */ /* zero, built-in Ident number will */ /* be used) */ unsigned char bBusAddr; /* Bus address */ unsigned char abReserved2[1]; /* Do not modify */ unsigned char bFlags; /* Configuration flags */ /* Bit 0: Chk_Cfg telegram data will */ /* be accepted as valid config. */ /* Bit 1: Ignore hardware address */ /* switch, use bBusAddr instead */ /* Bit 2: Hold last output data when */ /* entering safe state */ /* Bit 4: Swap data of word modules */ unsigned char bDpv1C1BufLen; /* Length of DPV1 class 1 buffer */ /* (including 4 bytes DPV1 header) */ unsigned char bDpv1C2BufLen; /* Length of DPV1 class 2 buffer */ /* (including 4 bytes DPV1 header) */ unsigned char bMiscUserFlags; /* Misc. flags for user */ unsigned char bMiscTaskFlags; /* Misc. flags for task */ unsigned char bBufferLen; /* Length of PARA_DIAG_BUFFER */ union { struct { unsigned char bType; /* Type of module */ unsigned char bLen; /* Length of module */ } MODULE[24]; struct { unsigned char abExtDiagData[32]; /* Extended diagnostic data */ unsigned char abReserved3[16]; } DIAG_DATA; } BUFFER; } DPS_TASK_PARAMETER;
Delphi-Quellcode:
wäre sehr dankbar für eine Hilfe
Type
DPS_TASK_PARAMETERtag=record bPlcMode : byte; usWatchdogTime : shortint; abReserved1:array[1..3] of byte; ... ... bBufferLen: byte ????????????? ???????????? [edit=mkinzler]Quellcode-Tags eingefügt Mfg, mkinzler[/edit] |
Re: Struktur übersetzen von C nach Delphi
Hallo,
such mal unter "variante Records" (nicht Delphi-Variants!), das sollte nach meinen sehr begrenzten C-Kenntnissen das Pendant zu unions sein... [edit] Übrigens: Ein unsigned short ist in Delphi ein "word", kein "shortint" (16Bit unsigned, nicht 8 signed). [/edit] Viel Erfolg |
Re: Struktur übersetzen von C nach Delphi
Mangels C-Kenntnissen würde ich sowas vermuten:
Delphi-Quellcode:
DPS_TASK_PARAMETER = packed record
case Byte of 0:( //BUFFER MODULE: packed array [0..23] of packed record bType: Byte; bLen: Byte; end; ); 1:( //DIAG_DATA abExtDiagData: packed array[0..31] of Byte; abReserved3: packed array[0..15] of Byte; ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz