Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu record (https://www.delphipraxis.net/169765-frage-zu-record.html)

himitsu 10. Aug 2012 11:31

AW: Frage zu record
 
Wieso nicht?

Packed Records packen immer so, wie ich mir das denke.
= Kein Zwischenraum zwischen den einzelnen Feldern, was einem
Delphi-Quellcode:
{$A-} | {$A1} | {$ALIGN 1}
gleich kommt.

Ohne PACKED, bzw. mit ALIGN größer 1 muß man schon etwas nachdenken und wissen wie einige Typen intern aufgebaut sind, um die Ausrichtung zu erkennen.

p80286 10. Aug 2012 11:36

AW: Frage zu record
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1177683)
Ich würde das nicht tun!
Denn packed records packen manchmal eben nicht so, wie man sich das denkt. Irgendwann (Arrays mit ungerader Länge) wird doch auf das nächst gerade Byte ausgerichtet und -wupps- hat man den Salat.

a) Kannst Du das belegen?

b) falls ich Fremddaten lesen muß sieht das ungefähr so aus
Delphi-Quellcode:
myrecord=packed record.....end;

setlength(buffer,sizeof(myrecord));

gelesen:=fs.read(buffer,sizeof(buffer));
Gruß
K-H

Iwo Asnet 10. Aug 2012 11:51

AW: Frage zu record
 
Also ich habe ein altes Projekt, wo das mit dem packed und alligned nicht so war.
Dort sind Packed records in Packed records und noch diverse packed array [0..4] of string[10] usw. deklariert und man hat sich gewundert, das beim Lesen der Daten ab der Stelle schießmichtot (3 Jahre her) ein Byteshift um 1 drin var.... Umgestellt auf explizites Lesen jedes Feldes => Alles paletti.

@p80286: Belegen kann ich das nicht mehr, das Projekt wurde ja verändert und funktioniert nun.

.... Aber wenn ich mir die alte Deklaration so anschaue, wundere ich mich, das dort packed record mit packed array und (!) array kombiniert wurde. Da wundert mich nüscht mehr!

Wird wohl daran gelegen haben...

p80286 10. Aug 2012 12:59

AW: Frage zu record
 
Zitat:

Zitat von Iwo Asnet (Beitrag 1177695)
.... Aber wenn ich mir die alte Deklaration so anschaue, wundere ich mich, das dort packed record mit packed array und (!) array kombiniert wurde. Da wundert mich nüscht mehr!

Da bist Du nicht alleine, so etwas ist wohl jedem von uns mal passiert.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.
Seite 2 von 2     12   

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