![]() |
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Du musst nicht nicht umwandeln nur zuweisen
Longword, LongInt, Int32, TColor, Integer, Cardinal Int32 , alles 4 Byte im Speicher .... |
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Danke für Deine schnelle Antwort. Zuweisen... Ich arbeite zwar schon seit Jahren mit Delphi (7), aber mit Speicherzuweisungen habe ich noch nie gearbeitet. Ich weiß ehrlich gesagt nicht, wie ich dies bewerkstelligen soll. Ich hatte gerade folgendes probiert: "ThisColor1:=ColorToString(GlowLabel1.Font.Color); "
Wobei ThisColor1 vom Typ LONGINT ist. Delphi sagt: "[Error] Box1.pas(1726): Incompatible types: 'Integer' and 'String'" Aber ich habe mir inzwischen natürlich auch eigene Gedanken gemacht: die letzten sechs Ziffern des "$"-Wertes sind ja Hexadezimalziffern, in drei Blöcken. Außerdem weiß ich, daß jede Farbe auch durch eine sehr große Zahl (LongInt?) repräsentiert wird. Es gibt da bestimmt Wege, dieses Dreierpaket an Hex-Werten in so einen Wert umzuwandeln. |
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Delphi-Quellcode:
EDIT
ThisColor1:=GlowLabel1.Font.Color;
StringToColor liefert dir aus einem String ein TColor welches Du in einem Longint oder Cardinal ablegen kannst. |
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Irgendwie bewege ich mich noch immer auf dem Holzpfad. Ich komme einfach, trotz all Deiner Hilfen, nicht weiter. Ich habe Deinen Vorschlag (Color in LongInt umzuwandeln) aufgegriffen, finde aber bis jetzt keine entsprechende Delphi-Funktion zum Umwandeln. Nur ColorToRGB, ColorToString.
Mir geht es ja nur darum, in der programmeigenen INI-Datei die Farben des Benutzers abzuspeichern, aber nicht als "cl"-Wert, sondern nur als "$"-Wert. Jedoch, wenn der Benutzer sich eine Farbe im ColorDialog aussucht, kann es manchmal sein, daß diese Farbe als "cl"-Wert weitergegeben wird und nicht als "$"-Wert. StringToColor erzeugt doch auch Farbwerte wie "clRed", wenn der Benutzer die Farbe RGB FF 00 00 (reines rot) ausgesucht hatte. Und Dein Zitat stimmt: das Problem steckt wirklich in den meisten Fällen zwischen den Ohren. Ich hoffe, ich fange nicht an, Euch alle zu langweilen mit meinen ewigen Fragen... UPDATE Ich habe jetzt eine andere Lösung gefunden:
Code:
var
TheColor1, TheColor2: String; TheColor1:=TColorToHex(Sender,GlowLabel1.Font.Color); TheColor2:=TColorToHex(Sender,GlowLabel1.GlowColor); TheColor1:='$00'+Copy(TheColor1,5,2)+Copy(TheColor1,3,2)+Copy(TheColor1,1,2); TheColor2:='$00'+Copy(TheColor2,5,2)+Copy(TheColor2,3,2)+Copy(TheColor2,1,2); function TAlpha.TColorToHex(Sender: TObject; Color: TColor): string; begin Result:=IntToHex(GetRValue(Color),2)+IntToHex(GetGValue(Color),2)+IntToHex(GetBValue(Color),2); end; function TAlpha.HexToTColor(Sender: TObject; sColor: string): TColor; // Nicht benutzt begin Result:=RGB(StrToInt('$'+Copy(sColor,1,2)),StrToInt('$'+Copy(sColor,3,2)),StrToInt('$'+Copy(sColor,5,2))); end; Zitat:
|
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Es gibt ja immer mehrere Wege für eine Lösung, aber nur wenig smarte:
Delphi-Quellcode:
var
MyColor : TColor; MyColorStr : String; tmpInt : Int64; begin // Farbe in einen Hex-String umwandeln MyColorStr := '$' + IntToHex( MyColor ); // String ( Integer oder Hex-Wert ) in eine Farbe umwandeln if TryStrToInt64( MyColorStr, tmpInt ) and ( tmpInt >= -$7FFFFFFF-1 ) and ( tmpInt <= $7FFFFFFF ) then MyColor := tmpInt else raise Exception.CreateFmt( '"%s" ist keine Farbe!', [ MyColorStr ] ); end; |
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Zitat:
Delphi-Quellcode:
kann von Haus aus mit Hex-Werten umgehen, wenn das $-Zeichen vorangestellt wird.
StrToInt
|
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Auch 'ne nette Lösung. Kürzer und wesentlich eleganter als meine.
|
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
schau mal ins Posting #16
|
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Ohhhh. Stimt. Vollkommen richtig. Da habe ich Dir großes Unrecht getan, Bummi. Du warst der erste mit diesem Lösungsansatz. Zu diesem Zeitpunkt nahm ich aber noch an, daß jene Funktion auch "cl"-Werte erzeugt, nicht nur "$"-Werte, deswegen hatte ich gezögert, diese Lösung zu benutzen. Erst als Sir Rufo direkt erwähnte, daß jene Funktion NUR "$"-Werte erzeugt, habe ich sie näher betrachtet. Mein Fehler. Umso mehr Dank an Dich.
|
AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)
Zitat:
Der Farbwert Rot wird durch folgenden HexCode dargestellt
Code:
.
$000000FF
Mir deiner Logik machst du daraus aber
Code:
.
FF0000
Beim Einlesen drehst du es zwar wieder richtig ... aber jeder der die gespeicherten Werte kontrollieren will und deinen Code nicht kennt ... :stupid: Es heißt zwar RGB aber die einzelnen Farbwerte werden im HexCode nicht wie Text sondern wie eine Zahl betrachtet.
Code:
Wird ein Wort länger, dann "wächst" es nach rechts, aber eine Zahl ...
Text:
a ab abc abcd
Code:
Zahl
1 12 123 1234 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz