Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Frage zu einer type definition (https://www.delphipraxis.net/194124-frage-zu-einer-type-definition.html)

A.Griffin 19. Okt 2017 13:47

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:
...
EinBeispiel: T_BUS_Text;
...
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?

Neutral General 19. Okt 2017 14:06

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.

DeddyH 19. Okt 2017 14:15

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;

A.Griffin 19. Okt 2017 14:48

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?

Neutral General 19. Okt 2017 14:50

AW: Frage zu einer type definition
 
Jo genau.

A.Griffin 19. Okt 2017 14:51

AW: Frage zu einer type definition
 
Vielen Dank

Rollo62 19. Okt 2017 20:08

AW: Frage zu einer type definition
 
Sollte das nicht besser ein packed record sein ?

himitsu 20. Okt 2017 00:26

AW: Frage zu einer type definition
 
Es sind alles Bytes, somit ist es praktisch immer packed.

Rollo62 20. Okt 2017 10:08

AW: Frage zu einer type definition
 
byte und word könnte sich evtl. anders anordnen ...

Naja, wenn du sicher bist ist es ja OK.

Stevie 20. Okt 2017 10:52

AW: Frage zu einer type definition
 
Arrays sind immer packed.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz