Hallo zusammen,
was stimmt mit diesem Code nicht ?
Vergleiche eigentlich nur auf Standard-Farben von TAlphaColorRec, mit
dem aktuellen Wert, in diese Funktion.
Delphi-Quellcode:
case LCol of
TAlphaColorRec.Red : Result := TAlphaColorRec.Fuchsia;
TAlphaColorRec.Fuchsia : Result := TAlphaColorRec.Blue;
War getestet auf allen Platformen, jetzt noch iOS ...
Plötzlich kommt kein Vergleich mehr durch
Es landet Alles im else Zweig.
Habe es dann erweitert, und mit if Vergleich versucht -> dasselbe Ergebnis
Die Werte im Debugger links und rechts sind gleich, trotzdem geht er nicht ins if.
(z.B. if LCol = LCmp FFFF0000 = FFFF0000)
Habe dann versucht die Bytes einzeln anzufassen s.u., und siehe da,
die R Werte sind plötzlich verschieden.
Delphi-Quellcode:
function TS4Color.Swatch_Next : TAlphaColor;
var
LCol, LCmp : TAlphaColor;
LC1, LC2 : System.Byte;
begin
LCol := Self;
LCmp := TAlphaColorRec.Red;
LC1 := TAlphaColorRec(LCol).R; // hier kommt 144 an
LC2 := TAlphaColorRec(LCmp).R; // und hier 255 bei gleichem LCmp im Debugger, s.o.
if LC1 = LC2 then
begin
if TAlphaColorRec(LCol).G = TAlphaColorRec(LCmp).G then
begin
if TAlphaColorRec(LCol).B = TAlphaColorRec(LCmp).B then
begin
LCmp := 0;
end;
end;
end;
case LCol of
TAlphaColorRec.Red : Result := TAlphaColorRec.Fuchsia;
TAlphaColorRec.Fuchsia : Result := TAlphaColorRec.Blue;
TAlphaColorRec.Blue : Result := TAlphaColorRec.Darkblue;
TAlphaColorRec.Darkblue : Result := TAlphaColorRec.Lightblue;
TAlphaColorRec.Lightblue : Result := TAlphaColorRec.Green;
TAlphaColorRec.Green : Result := TAlphaColorRec.Darkgreen;
TAlphaColorRec.Darkgreen : Result := TAlphaColorRec.Lightgreen;
TAlphaColorRec.Lightgreen : Result := TAlphaColorRec.Cyan;
TAlphaColorRec.Cyan : Result := TAlphaColorRec.Purple;
TAlphaColorRec.Purple : Result := TAlphaColorRec.Orangered;
TAlphaColorRec.Orangered : Result := TAlphaColorRec.Red;
else
Result := TAlphaColorRec.Red;
end;
Self := Result; // Make myself also different
end;
Wie kann das sein, wahrscheinlich bin ich schon überarbeitet und brauche jetzt mal eine Pause