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