Fertig und geht:
Delphi-Quellcode:
//...
procedure TCardinalRec.SetCardinal(const Value : Cardinal);
begin
_Byte[0] := Value shr 24;
_Byte[1] := Value shr 16;
_Byte[2] := Value shr 8;
_Byte[3] := Value and $FF;
end;
Das geht aber nur deshalb, weil Du Rangecheck ausgeschaltet hast oder zu kleine Werte nimmst. Immerhin scheinst Du ja nur zu 75% überzeugt zu sein, sonst hättest Du ja auch konsequenterweise
_Byte[3] := Value; gesetzt. Also:
Delphi-Quellcode:
procedure TCardinalRec.SetCardinal(const Value : Cardinal);
begin
_Byte[0] := Value shr 24 and $FF;
_Byte[1] := Value shr 16 and $FF;
_Byte[2] := Value shr 8 and $FF;
_Byte[3] := Value and $FF;
end;
wobei man sich bei der _Byte[0]-Berechnung theroretisch das
and $FF sparen könnte.