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
Seite 2 von 2     12   
Der schöne Günther

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

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

  Alt 22. Okt 2018, 13: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
4.094 Beiträge
 
Delphi 12 Athens
 
#12

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

  Alt 22. Okt 2018, 14: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
 
#13

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

  Alt 22. Okt 2018, 14: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.070 Beiträge
 
Delphi 10.4 Sydney
 
#14

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

  Alt 22. Okt 2018, 14: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 14:58 Uhr)
  Mit Zitat antworten Zitat
Rollo62

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

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

  Alt 22. Okt 2018, 17:19
Ja das dachte ich zuerst auch.
Aber im Beispiel passiert das auch ohne das die Farbe mit PixelFormat im Canvas verwurstet wird.
Ich hatte es getestet indem ich z.B. Rectangle.Fill.Collor hole, lokal ändere und und schreibe,
aber im Demo arbeite ich bereits mit einer Schattenvariablen vom Typ TAlphaColor.
Das hat dann gar nichts mehr mit der Farbe und Canvas an sich zu tun.

Das kann es also eigentlich nicht sein, weil das Pixelformat bei TAlphaColor keine
Rolle spielt (nur wenn man es explizit konvertieren will),
es wird ja nur als Cardinal 32-Bit Speicher für die Farbkonstante benutzt.

Interessant war aber das im Debugger die Cardinal-Werte korrekt angezeigt wurden,
wenn ich einzelne Bytes heraushole, dann kann man aber Unterschiede sehen.
Leider funktioniert der iOS Debugger nur spärlich, deshalb kann ich mir da keinen Reim drauf machen.

Rollo

Geändert von Rollo62 (22. Okt 2018 um 17:22 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:15 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