AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)
Thema durchsuchen
Ansicht
Themen-Optionen

[FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

Ein Thema von Rollo62 · begonnen am 19. Okt 2018 · letzter Beitrag vom 22. Okt 2018
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
3.932 Beiträge
 
Delphi 12 Athens
 
#1

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 11:46
Ja, stimmt, da hast du auch wieder Recht

Ich sag ja, ich kann mir das auch nicht erklären.
Vieleicht hat es was mit dem
    Azure = Alpha or TAlphaColor($F0FFFF); zu tun.

Hatte ja das PixelFormat in Verdacht, aber die Konvertierungsprobleme treten auch bei einer einfachen TAlphaColor Variablen auf.

Wie auch immer, bei iOS(64) lande ich IMMEr im else Zweig,
bei allen anderen OS holt er sich wie gewünscht das nächste Farbfeld.

Hast du das Demo mal getestet, oder verhält sich das bei dir etwa korrekt ?
Man muss natürlich den Fehlerfall ent-kommentieren ...
Delphi-Quellcode:
    LCol := Color_Swatch_Next_ByCase( LCol ); // TAlphaColor compare FAILURE
// LCol := Color_Swatch_Next_ByIfthen( LCol ); // TAlphaColor compare OK
Rollo
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 11:53
Hast du das Demo mal getestet, oder verhält sich das bei dir etwa korrekt ?
Sorry, bis ich den Mac Mini gefunden und die VM wo das RAD Studio für iOS halbwegs stabil lief wieder reaktiviert habe ist die Woche wahrscheinlich rum.
iOS müsste jemand anderes testen.
  Mit Zitat antworten Zitat
knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 12:46
irgendwas mit den datentypen macht ios da jedenfalls anders.

ich habe mal ganz ketzerisch den farbwert in einen integer geschrieben und siehe da, die case-anweisung funzt damit mit ios

Delphi-Quellcode:
...
var farbwert:integer;
...

    farbwert:=Acol;

    case farbwert 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;
Wolfgang
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 12:55
TAlphaColor ist ein Cardinal
http://docwiki.embarcadero.com/Libra...es.TAlphaColor

Im Quelltext sind sie ja nicht typisiert, ich gehe mal davon aus dass z.B. TAlphaColorRec.Red auch als Cardinal erweitert wird? Sein Wert ist ja Alpha or TAlphaColor($FF0000); , vielleicht macht der iOS64 Compiler hier einen anderen Typen draus?

http://docwiki.embarcadero.com/Libra...TAlphaColorRec
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.932 Beiträge
 
Delphi 12 Athens
 
#5

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 13:12
Ja, ich dachte mir das auch in die Richtung,
aber wegen Alpha = TAlphaColor($FF000000); sollte doch immer ein 32-Bit wert herauskommen, der nicht z.B. in 16.Bit passt.
  Mit Zitat antworten Zitat
knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 13:34
der unterschied zwischen cardinal (4 bytes unsigned) und integer (4 bytes signed) ist doch nur die vorzeichenunterstützung. integer ist signed, cardinal unsigned. möglicherweise liegt da auch der hund begraben. egal, runtergebrochen ist ein bit immer ein bit und fertig. 4 bytes lassen sich immer auch mit 4 bytes füttern. alles andere ist nur darstellerei

im debugger ist mir beim ios debuggen schon öfter aufgefallen, dass datentypen mit 64 bit statt den erwarteten 32 geführt werden.

eigentlich schließt der code das in diesem fall ja schon aus und leider will mein debugger die cardinal-werte mit ios auch nicht als hex anzeigen (an anderer stelle war es auch schonmal andersherum, dass nur hex angezeigt wurde). aber vielleicht gibt die längenberechnung ja auch einen "gepatchten" wert zurück, damit ... was weiß ich wozu

aber was solls. der int-wert funzt mindestens schonmal unter ios und windows. android hab ich nicht getestet.
Wolfgang
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.062 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: [FMX, iOS] TAlphaColor Farbvergleiche falsch (nur iOS)

  Alt 22. Okt 2018, 13:55
Mit Little/Big Endian und damit BGRA vs. RGBA vs. ARGB hat das aber nichts zu tun?

EDIT: Vergleiche am Ende von TAlphaColorRec:

Delphi-Quellcode:
 PAlphaColorRec = ^TAlphaColorRec;
  TAlphaColorRec = record
  const
    Alpha = TAlphaColor($FF000000);
    Aliceblue = Alpha or TAlphaColor($F0F8FF);
//...
    Null = TAlphaColor($00000000);
    constructor Create(const Color: TAlphaColor);
    class var ColorToRGB: function (Color: TAlphaColor): Longint;
    case Cardinal of
      0:
        (Color: TAlphaColor);
      2:
        (HiWord, LoWord: Word);
      3:
{$IFDEF BIGENDIAN}
        (A, R, G, B: System.Byte);
{$ELSE}
        (B, G, R, A: System.Byte);
{$ENDIF}
  end;

Geändert von TiGü (22. Okt 2018 um 13:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz