![]() |
Re: Bitte eine Zeile C nach Delphi übersetzen
Zitat:
|
Re: Bitte eine Zeile C nach Delphi übersetzen
Zitat:
|
Re: Bitte eine Zeile C nach Delphi übersetzen
Es ist ein dynamisches Array nach Microsoft C Art.
Es wird ein Speicherbereich alloziiert und dann der Anfang des Bereiches mit diesem Recordtyp interpretiert. Es wird nun der Laengenwert gesetzt. Danach wird oft eine API-Funktion gerufen, die den Bereich ausfuellt. Manchmal liefert auch eine API-Funktion einen fertig ausgefuellten Bereich ab. Nur der Name ANY_SIZE deutet an das es so eine Konstruktion ist. C erlaubt es das eine Arraydeklaration am Ende eines Records/Structs Null Elemente haben darf, also ein sizeof() von Null. Damit bekommt der Speicherbereich hinter dem Record einen Namen und Typ. |
Re: Bitte eine Zeile C nach Delphi übersetzen
Und wie kann ich das am vernünftigsten nach Delphi umsetzen?
|
Re: Bitte eine Zeile C nach Delphi übersetzen
Das ist die wahrscheinlich korrekteste Version der Deklaration:
Delphi-Quellcode:
DWORD ist in Windows.pas deklariert.
type
Pabc = ^abc; abc = packed record def: DWORD; hij: array [0..ANY_SIZE-1] of DWORD; end; Jetzt kannst du einen geeignet langen Speicherbereich mit GetMem alloziieren und den Pointer zu einem Pabc umtypen. Wenn du dann noch die Rangechecks ausschaltest kannst du die Elemente von hij ansprechen mit hij[I]. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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