Nochmal weiter analysiert:
Laut
DokWiki und
hier ist TAlphaColor = Cardinal = 32-Bit
Zitat:
selectorExpression ist ein beliebiger Ausdruck mit einem ordinalen Typ, der kleiner als 32 Bit ist (String-Typen und ordinale Typen, die größer als 32 Bit sind, sind nicht zulässig). Für caseList kann Folgendes angegeben werden:
Sollte also mit case of funktionieren.
Es scheint so als würden Vergleiche per "case of" unter iOS nicht zu funktionieren
Delphi-Quellcode:
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; // <- landet immer hier
end;
Vergleiche mit "if then" funktionieren unter iOS schon
Delphi-Quellcode:
if TAlphaColorRec.Red = LCol then
Result := TAlphaColorRec.Fuchsia
else if TAlphaColorRec.Fuchsia = LCol then
Result := TAlphaColorRec.Blue
else if TAlphaColorRec.Blue = LCol then
Result := TAlphaColorRec.DarkBlue
else if TAlphaColorRec.DarkBlue = LCol then
Result := TAlphaColorRec.LightBlue
else if TAlphaColorRec.LightBlue = LCol then
Result := TAlphaColorRec.Green
else if TAlphaColorRec.Green = LCol then
Result := TAlphaColorRec.DarkGreen
else if TAlphaColorRec.DarkGreen = LCol then
Result := TAlphaColorRec.LightGreen
else if TAlphaColorRec.LightGreen = LCol then
Result := TAlphaColorRec.Cyan
else if TAlphaColorRec.Cyan = LCol then
Result := TAlphaColorRec.Purple
else if TAlphaColorRec.Purple = LCol then
Result := TAlphaColorRec.Orangered
else
Result := TAlphaColorRec.Red;
Im Anhang noch ein kleines Testprogramm, wo ich versucht habe das Problem etwas zu separieren.
Es liegt wohl nicht daran das TAlphaColor > 32-Bit ist, und auch nicht daran das die Umrechnung von PixelFormaten falsch läuft.
Es scheint wirklich am "case of" zu liegen, wobei alle anderen Platformen sich korrekt verhalten.
Also werde ich mal mit "if then" weiterarbeiten müssen.
Rollo