Ich räume grade in einem Projekt etwas auf, in dem einige Altlasten drin sind. Und einen Punkt verstehe ich da nicht.
In einer Ini-Datei habe ich diverse Farben gespeichert, die ich mit Hilfe von StringToColor in einen TColor-Wert übersetze. Die Werte habe ich damals (meine ich zumindest) über einen TColorDialog im Programm ausgewählt und dann abgespeichert. Das kann ich aber nicht mehr sicher sagen, weil dieser Auswahl-Teil mittlerweile aus dem Programm entfernt wurde.
Das Problem ist: Ich verstehe die Werte in den alten Ini-Dateien nicht und kriege dann Probleme, wenn ich einzelne Farben ändern will.
Da ist z.B. der Wert
$ff00000D. Das ergibt einen Blauton (warum auch immer). Wenn ich den Wert "leicht abändere" auf
$ff00000E, dann ist das Ergebnis weiß (mehr oder weniger), und bei
$ff00000C ein mittleres grau.
Kann man auch schnell nachbauen mit
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Edit1Change(Sender: TObject); begin try Label1.Font.Color := StringToColor(Edit1.Text); except
end; end; |
Klar, der Fehler liegt irgendwie in dem führenden FF, das wohl den Alphakanal beinhaltet, und der Typdefinition von
TColor = -$7FFFFFFF-1..$7FFFFFFF;. Das passt irgendwie nicht.
Aber wie kommen diese Farbwerte dann zustande, die ich da beobachte? Und hat jemand eine Theorie, warum ich damals so viele Farben in dieser Form abgespeichert habe und nicht als BGR-Werte (ohne alpha) wie
$00ff00 für "Grün"? Hat sich da irgendwann was geändert bei der Farbverwaltung in Delphi?
Edit: Hat sich erledigt. Diese Farbwerte sind die Systemfarben.
Delphi-Quelltext
1: 2: 3:
| COLOR_HIGHLIGHT = 13; clSystemColor = $FF000000; clHighlight = TColor(clSystemColor or COLOR_HIGHLIGHT); |
Wollte ich zwar damals bestimmt nicht so haben, aber jetzt ist mir die Ursache für den Murks in den Inifiles klar.
We are, we were and will not be.