![]() |
Frage zu einer type definition
Code:
type
T_BUS_Text = record case byte of 0: (b: array[1..20] of byte); 1: (s: array[1..20] of char); 2: (w: array[1..10] of word); end;
Code:
Es werden in dem Code den ich gerade lese dann z.B. EinBeispiel.b[i] von 1 bis 8 gefüllt und dann wird aber mit EinBeispiel.s weitergearbeitet. Wie funktioniert diese Art von Typdefinition?
...
EinBeispiel: T_BUS_Text; ... |
AW: Frage zu einer type definition
Alle 3 Arrays überlagern im Speicher. Alle Daten aus b sind gleichzeitig auch in s und in w.
Ist unterm Strich eine Art cast - Gleiche Daten werden einfach unterschiedlich interpretiert. |
AW: Frage zu einer type definition
Ab Delphi 2009 wird der Code aber so wie er ist nicht mehr funktionieren, man sollte sicherheitshalber eine kleine Änderung vornehmen:
Delphi-Quellcode:
type
T_BUS_Text = record case byte of 0: (b: array[1..20] of byte); 1: (s: array[1..20] of AnsiChar); //Probleme mit Unicode vermeiden 2: (w: array[1..10] of word); end; |
AW: Frage zu einer type definition
Das heißt dann, wenn ich EinBeispiel.b[1] := 77; mache dann habe ich bei EinBeispiel.s[1] ein "M" gespeichert?
|
AW: Frage zu einer type definition
Jo genau.
|
AW: Frage zu einer type definition
Vielen Dank
|
AW: Frage zu einer type definition
Sollte das nicht besser ein packed record sein ?
|
AW: Frage zu einer type definition
Es sind alles Bytes, somit ist es praktisch immer packed.
|
AW: Frage zu einer type definition
byte und word könnte sich evtl. anders anordnen ...
Naja, wenn du sicher bist ist es ja OK. |
AW: Frage zu einer type definition
Arrays sind immer packed.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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 by Thomas Breitkreuz