[gelöst]Wiki zu Colors fehlerhaft ?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

[gelöst]Wiki zu Colors fehlerhaft ?

Beitrag von oliver2104 »

Hallo,
wenn man sucht, wie Farben in Lazarus verwendet werden, findet sich oft folgende Doku:
https://wiki.freepascal.org/Colors
Da gibt es schöne Beispiele zu RGB Farben.
Ich bin aber überzeugt, da hat sich bei vielen Farben ein Fehler eingeschlichen.
Nur ein Beispiel:
Farbe Brown wird kodiert als TColor($A52A2A) -> ergibt aber in Wirklichkeit ein dunkles Blau
ich denke da wurde R mit B vertauscht und es sollte lauten TColor($2A2AA5)
Zuletzt geändert von oliver2104 am Do 14. Nov 2024, 12:43, insgesamt 1-mal geändert.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 581
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 3.9 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Wiki zu Colors fehlerhaft ?

Beitrag von Niesi »

In Inkscape habe ich das hier als Resultat:

Colors.png
Colors.png (6.11 KiB) 3790 mal betrachtet
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

wp_xyz
Beiträge: 5129
Registriert: Fr 8. Apr 2011, 09:01

Re: Wiki zu Colors fehlerhaft ?

Beitrag von wp_xyz »

Hast recht, TColor hat im Vgl zu HTML R und B vertauscht. Im Abschnitt über die Farben in System.UITypes steht auch: clBlue = TColor($0000FF) - aber das ist definitiv rot, nicht blau, wie man auch in dem darüberstehenden Abschnitt über die 20 Delphi-kompatiblen Farben sieht. Ich denke, da hat der Autor einfach die Farbwerte aus der HTML-Spalte in die TColor-Spalte kopiert und vergessen, den R- und B-Anteil zu vertauschen.

"Man" müsste die Seite mal überarbeiten... [edit: erledigt]

[EDIT]
Ach, ich sehe gerade, das ist auch in System.UITypes schon falsch:

Code: Alles auswählen

      const
      // 140 HTML colors.
      AliceBlue          = TColor($F0F8FF);
      AntiqueWhite       = TColor($FAEBD7);
      Aqua               = TColor($00FFFF);
      Aquamarine         = TColor($7FFFD4);
      Azure              = TColor($F0FFFF);
      Beige              = TColor($F5F5DC);
      Bisque             = TColor($FFE4C4);
      Black              = TColor($000000);
      BlanchedAlmond     = TColor($FFEBCD);
      Blue               = TColor($0000FF);
      BlueViolet         = TColor($8A2BE2);
      Brown              = TColor($A52A2A);
"Man" müsste also auch einen Bug-Report an das FPC-Projekt schicken...

[Noch ein EDIT]
Am git-Log sieht man, dass das inzwischen behoben ist, schon am 28.12.2021. Durch den langsamen Release-Zyklus von FPC ist die Änderung immer noch im aktuellen FPC 3.2.2 enthalten. In 3.2.4 müsste es richtig sein.
Zuletzt geändert von wp_xyz am Do 14. Nov 2024, 00:48, insgesamt 2-mal geändert.

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wiki zu Colors fehlerhaft ?

Beitrag von Mathias »

"Man" müsste also auch einen Bug-Report and das FPC-Projekt schicken...
Nur wen dies angepasst wird, wird es Probleme bei Programmen geben, welche diese Werte verwenden und dann auf einmal falsche Farben in ihren Programmen haben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wiki zu Colors fehlerhaft ?

Beitrag von Mathias »

Doppelpost
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 5129
Registriert: Fr 8. Apr 2011, 09:01

Re: Wiki zu Colors fehlerhaft ?

Beitrag von wp_xyz »

Mathias hat geschrieben: Di 12. Nov 2024, 14:51
"Man" müsste also auch einen Bug-Report and das FPC-Projekt schicken...
Nur wen dies angepasst wird, wird es Probleme bei Programmen geben, welche diese Werte verwenden und dann auf einmal falsche Farben in ihren Programmen haben.
Mit diesem Argument dürfte man keine Bugs fixen.

Dass das ein Bug ist, siehst du mit folgendem Code: Ein Formular mit zwei Panels, und im OnCreate steht der folgende Code --> man erwartet, dass beide Panels rot werden:

Code: Alles auswählen

uses
  System.UITypes;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Color := clRed;
  Panel2.Color := TColorRec.Red;
end; 
Stattdessen:
Dateianhänge
colorrec.red.png
colorrec.red.png (4.17 KiB) 3776 mal betrachtet

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wiki zu Colors fehlerhaft ?

Beitrag von Mathias »

Ich habe es gerade getestet, ich bekomme 2 rote Panels.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Color := clRed;
  Panel2.Color := TColorRec.Red;
end;   
Getestet mit Linux Mint und eine paar Wochen alte Trunk von FPC/Lazarus.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wp_xyz
Beiträge: 5129
Registriert: Fr 8. Apr 2011, 09:01

Re: Wiki zu Colors fehlerhaft ?

Beitrag von wp_xyz »

Klar. Ich habe oben geschrieben, dass das Problem schon am 28.12.2021 behoben wurde, aber leider noch im aktuellen FPC 3.2.2 enthalten ist, der ein paar Monate vorher freigegeben worden ist.

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Wiki zu Colors fehlerhaft ?

Beitrag von Mathias »

wp_xyz hat geschrieben: Di 12. Nov 2024, 22:30 Klar. Ich habe oben geschrieben, dass das Problem schon am 28.12.2021 behoben wurde, aber leider noch im aktuellen FPC 3.2.2 enthalten ist, der ein paar Monate vorher freigegeben worden ist.
Ups, ist es schon 3 Jahre her seit die letzte stable von fpc rauskram. Echt schade das es da immer so lange geht. Es hat in der trunk viele Features, welche endlich mal in die stable kommen sollten. Array Operationen, generic, etc.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 581
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 3.9 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Wiki zu Colors fehlerhaft ?

Beitrag von Niesi »

Mathias hat geschrieben: Mi 13. Nov 2024, 08:27
wp_xyz hat geschrieben: Di 12. Nov 2024, 22:30 Klar. Ich habe oben geschrieben, dass das Problem schon am 28.12.2021 behoben wurde, aber leider noch im aktuellen FPC 3.2.2 enthalten ist, der ein paar Monate vorher freigegeben worden ist.
Ups, ist es schon 3 Jahre her seit die letzte stable von fpc rauskram. Echt schade das es da immer so lange geht. Es hat in der trunk viele Features, welche endlich mal in die stable kommen sollten. Array Operationen, generic, etc.
Mir ist wichtiger, dass es möglichst "fehlerarm" ist, also gründlich gearbeitet wird.

Und das ist bei OpenSource nun mal nicht immer so einfach, da der Fachkräftemangel im Bereich OpenSource besonders ausgeprägt ist ... :mrgreen:

Danke an die, die da mitarbeiten :!:
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

Re: Wiki zu Colors fehlerhaft ?

Beitrag von oliver2104 »

Soweit ich das verstanden habe , liegt der Fehler nicht in der Wiki-Doku, sondern direkt im FPC 3.2.2
Und das wird in der nächsten FPC Version behoben, wann immer die auch kommen wird.
Sehe ich das richtig ?
Bis dahin werde ich die Farbzuweisungen mit der function RGBToColor(R, G, B: Byte) machen.
Ist zwar mühsam weil die Hex Werte aus der Wiki nach Dezimal konvertiert werden müssen,
aber die Farben bleiben so auch in der nächsten FPC Version die gleichen.

Auch ich möchte allen danken, die am FPC-Projekt mitarbeiten !!!

Benutzeravatar
six1
Beiträge: 837
Registriert: Do 1. Jul 2010, 19:01

Re: Wiki zu Colors fehlerhaft ?

Beitrag von six1 »

@ oliver2104
Schau dir mal Hex2Dec aus strutils an....
Gruß, Michael

wp_xyz
Beiträge: 5129
Registriert: Fr 8. Apr 2011, 09:01

Re: Wiki zu Colors fehlerhaft ?

Beitrag von wp_xyz »

oliver2104 hat geschrieben: Mi 13. Nov 2024, 12:42 Bis dahin werde ich die Farbzuweisungen mit der function RGBToColor(R, G, B: Byte) machen.
Ist zwar mühsam weil die Hex Werte aus der Wiki nach Dezimal konvertiert werden müssen,
Du kannst den Farbwert auch direkt als Hex-Zahl schreiben: $BBGGRR. Nimm die Werte aus dem wiki-Artikel und vertausche das 1. und letzte Byte. Oder schreib den Hex-Wert in the RGBToColor-Funktion (nun ohne Vertauschung von R und B):

wiki: Brown - TColor($A52A2A) --> clBrown = $2A2AA5, oder RGBToColor($A5, $2A, $2A)

Übrigens, die "klassichen" Delphi-Farben sind im wiki richtig angegeben. Der Fehler steckt "nur" in den neuen "TColorRec"-Farben von FPC 3.2.0+ - die haben kein "cl" vorne, sondern das "TColorRec" (welcher schreibwütige Entwickler hat sich das ausgedacht?)

oliver2104
Beiträge: 48
Registriert: Sa 26. Dez 2020, 13:22

Re: Wiki zu Colors fehlerhaft ?

Beitrag von oliver2104 »

Danke für eure Antworten !
Glaube ich habe alles verstanden und seh das als gelöst.

Antworten