Gudn Namd
Zu später Stunde eine Frage zum Thema variante Records. Ich habe folgende Record-Definition:
Delphi-Quellcode:
TVarStr = record
case X: Boolean of
TRUE:
(
Str: string[32];
);
FALSE:
(
P1: string[6];
P2: string[6];
P3: string[6];
P4: string[6];
P5: string[6];
P6: string[2];
);
end;
Wenn ich dem Record dann einen Wert zuweise, etwa so:
Delphi-Quellcode:
var
X: TVarStr;
begin
X.Str:= '306E096DADF14AFDA5E4B22A17EC50D4';
end;
Dann erhalte ich bei folgendem Versuch:
Delphi-Quellcode:
var
X: TVarStr;
begin
X.Str:= '306E096DADF14AFDA5E4B22A17EC50D4';
ShowMessage(X.P1);
end;
nicht etwa wie ich erwarten würde "306E09" als Anzeige, sondern "306E096DADF14AFDA5E4B22A17EC50D4", also den ganzen String mit 32 Zeichen. Wenn ich gleichermaßen auf X.P6 zugreife, lande ich vom Speicherzeiger her hinter dem String und bekomme Datenschrott von 32 Bytes Länge zurück. Interessanterweise scheint sich die Position des Zeigers in dem Fall auch noch unterschiedlich zu verschieben, je nachdem ob ich für 32 oder 64 Bit compiliere. Wo mache ich da jetzt den Denkfehler?
Grüße
Cody