Thema: Delphi ungewöhliches record

Einzelnen Beitrag anzeigen

Benutzerbild von moin339
moin339

Registriert seit: 23. Sep 2002
Ort: Hamburg
136 Beiträge
 
#1

ungewöhliches record

  Alt 31. Jan 2004, 22:41
Moin!

Ich habe diesen Code in der Delphi Fundgrube gefunden. Jetzte frage ich mich allerdings wie dieses record genau funktioniert. Ich habe vorher so etwas noch nie gesehen. Kann mir jemand erklären wie der Integer-Wert damit in die vier Bytes aufgeteilt wird? Was bedeuteten die 0 und die 1?

Delphi-Quellcode:
function ColorToHTMLColor(Color: TColor): String;
var
  C: packed record case Integer of
       0: (Int: LongInt);
       1: (B0, B1, B2, B3: Byte);
    end;
  H: Byte;
begin
  // convert negative (SysColor) values like clBtnFace
  C.Int := ColorToRGB(Color);
  // red value of TColor is in byte 0, of HTML in byte 2: swap
  H := C.B0;
  C.B0 := C.B2;
  C.B2 := H;
  // output hex value
  Result := Format('"#%.6x"', [C.Int]);
end; {Michael Winter}
ciao, moin339
  Mit Zitat antworten Zitat