![]() |
Diese C++ Struktur in Delphi?
Moin,
kann mir jemand diesen Code in DelphiSyntax umsetzen?:
Delphi-Quellcode:
typedef struct {
DWORD isPID; union { struct { DWORD isSR; BYTE byMode; } MP; struct { DWORD isSV; DWORD isSS; } LHG; struct { DWORD diSS; BYTE byMode; } CA; } format; } PE_CONF, *PPE_CONF; |
Re: Diese C++ Struktur in Delphi?
Delphi-Quellcode:
type
PPE_CONF = ^PE_CONF; PE_CONF = record isPID : DWORD; format: record case Integer of 0: ( MP: record isSR : DWORD; byMode: BYTE; end); 1: ( LGH: record isSV : DWORD; isSS : DWORD; end); 2: ( CA: record diSS : DWORD; byMode: BYTE; end); end; end; |
Re: Diese C++ Struktur in Delphi?
Moin Nico,
danke für Deinen Code. Der funktioniert auch soweit. Dennoch habe ich 2 weitere Fragen dazu.... 1: Wieso funktioniert folgender Code nicht?:
Delphi-Quellcode:
Der Compiler markiert hier die Zeile "//bCopyright: BOOL;" rot (zu beachten ist, das es sich hierbei um einen Kommentar handelt!)
PBE_CONFIG = ^BE_CONFIG;
BE_CONFIG = record dwConfig: DWORD; format: record case Integer of 0: (mp3: record dwSampleRate: DWORD; byMode: BYTE; wBitrate: WORD; bPrivate: BOOL; bCRC: BOOL; bCopyright: BOOL; bOriginal: BOOL; end); 1: (LHV1: record dwStructVersion: DWORD; dwStructSize: DWORD; dwSampleRate: DWORD; dwReSampleRate: DWORD; nMode: UINT; dwBitrate: DWORD; dwMaxBitrate: DWORD; nPreset: UINT; dwMpegVersion: DWORD; dwPsyModel: DWORD; dwEmphasis: DWORD; bPrivate: BOOL; bCRC: BOOL; //bCopyright: BOOL; bOriginal: BOOL; bWriteVBRHeader: BOOL; bEnableVBR: BOOL; nVBRQuality: INT; dwVbrAbr_bps: DWORD; bNoRes: BOOL; //BYTE btReserved[255-2*sizeof(DWORD)]; end); 2: (aac: record dwSampleRate: DWORD; byMode: BYTE; wBitrate: WORD; byEncodingMethod: BYTE; end); end; end; Wie kann das sein? Bug im Compiler? ![]() 2: Wie kann ich folgende Zeile innerhalb eines Records in Delphi umsetzen:
Delphi-Quellcode:
? in Delphi ist SizeOf() ja eine Funktion, die kann ich da ja kaum anwenden oder?
BYTE btReserved[255-2*sizeof(DWORD)];
|
Re: Diese C++ Struktur in Delphi?
Bei mir meckert der Compiler nur über "nVBRQuality: INT;".
Mit "nVBRQuality: Integer;" geht es. Zitat:
Delphi-Quellcode:
btReserved: array[0..255-2*sizeof(DWORD)-1] of Byte;
|
Re: Diese C++ Struktur in Delphi?
Zitat:
Zitat:
Delphi-Quellcode:
btReserved: array [0..255 - 2 * SizeOf(DWORD) - 1] of BYTE;
|
Re: Diese C++ Struktur in Delphi?
Danke euch zwei zu 2. :]
Zu ersterem: Ich habe die Zeile versucht auszukommentieren, weil der Compiler den gleichen Fehler, auch ohne "//" anzeigt. Ich sehe dort aber kein Fehler. Das heisst an der auskommentierung selbst kann es nicht liegen. Dank euch sieht der Code derzeit so aus:
Delphi-Quellcode:
Ich benutze Delphi7 Personal.
PBE_CONFIG = ^BE_CONFIG;
BE_CONFIG = record dwConfig: DWORD; format: record case Integer of 0: (mp3: record dwSampleRate: DWORD; byMode: BYTE; wBitrate: WORD; bPrivate: BOOL; bCRC: BOOL; bCopyright: BOOL; bOriginal: BOOL; end); 1: (LHV1: record dwStructVersion: DWORD; dwStructSize: DWORD; dwSampleRate: DWORD; dwReSampleRate: DWORD; nMode: UINT; dwBitrate: DWORD; dwMaxBitrate: DWORD; nPreset: UINT; dwMpegVersion: DWORD; dwPsyModel: DWORD; dwEmphasis: DWORD; bPrivate: BOOL; bCRC: BOOL; bCopyright: BOOL; bOriginal: BOOL; bWriteVBRHeader: BOOL; bEnableVBR: BOOL; nVBRQuality: INT; dwVbrAbr_bps: DWORD; bNoRes: BOOL; btReserved: array [0..255-2*sizeof(DWORD)-1] of BYTE; end); 2: (aac: record dwSampleRate: DWORD; byMode: BYTE; wBitrate: WORD; byEncodingMethod: BYTE; end); end; end; Kann jemand den Fehler nachvollziehen? |
Re: Diese C++ Struktur in Delphi?
Zitat:
Delphi-Quellcode:
Du solltest dir abgewöhnen Tabulatoren in deinem Quellcode zu verwenden...
type
PBE_CONFIG = ^BE_CONFIG; BE_CONFIG = record dwConfig: DWORD; format : record case Integer of 0: ( mp3: record dwSampleRate: DWORD; byMode : BYTE; wBitrate : WORD; bPrivate : BOOL; bCRC : BOOL; bCopyright : BOOL; bOriginal : BOOL; end); 1: ( LHV1: record dwStructVersion: DWORD; dwStructSize : DWORD; dwSampleRate : DWORD; dwReSampleRate : DWORD; nMode : UINT; dwBitrate : DWORD; dwMaxBitrate : DWORD; nPreset : UINT; dwMpegVersion : DWORD; dwPsyModel : DWORD; dwEmphasis : DWORD; bPrivate : BOOL; bCRC : BOOL; bCopyright : BOOL; bOriginal : BOOL; bWriteVBRHeader: BOOL; bEnableVBR : BOOL; nVBRQuality : Integer; // INT dwVbrAbr_bps : DWORD; bNoRes : BOOL; btReserved : array [0..255 - 2 * SizeOf(DWORD) - 1] of BYTE; end); 2: ( aac: record dwSampleRate : DWORD; byMode : BYTE; wBitrate : WORD; byEncodingMethod: BYTE; end); end; end; |
Re: Diese C++ Struktur in Delphi?
Ahhh danke Nico... Der Fehler mit dem "Boolean" kam, weil ich dort "INT" statt "Integer" stehen hatte.... Komisch nur das es ihn ganz woanders anzeigt ;).
Besten Dank^^ PS: Ich habe die Feldnamen aus einer Cpp header datei kopiert, daher sind da noch ein paar Tabulatoren drinne, ich selbst nutze keine ;) Edit: WIeso kam bei dem Array eigentlich noch ein "-1" ? |
Re: Diese C++ Struktur in Delphi?
Hallo Leute,
der geniale Nicolaus Wirth hat natürlich auch die "Union" in Pascal eingeführt (ich beziehe mich jetzt auf den ersten Beitrag in diesem Thread). Borland hat diese Struktur schon seit TP 1.0 ebenfalls, sogar bis heute noch in Delphi. :freak: Ist natürlich wie so viele Features in Delphi, wie wir es leider von Borland gewohnt sind, miserabel dokumentiert (nämlich überhaupt nicht :roll: ). Tatsächlich lässt sich ein Union auch in Delphi deklarieren und erlaubt dem Proggie den sauberen Typecast auf einzelne Recordelemente. Gruss Question_mark PS : Bitte nicht mit dem "UNION" von SQL verwechseln, aber die Leute von der C-Fraktion werden mich schon verstanden haben :coder2: |
Re: Diese C++ Struktur in Delphi?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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