AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: IF: Kein Teil eienr Menge (Bedingung)

Ein Thema von SvenLittkowski · begonnen am 29. Jan 2011 · letzter Beitrag vom 2. Feb 2011
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#21

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 31. Jan 2011, 17:04
Du musst nicht nicht umwandeln nur zuweisen
Longword, LongInt, Int32, TColor, Integer, Cardinal
Int32 , alles 4 Byte im Speicher ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#22

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 31. Jan 2011, 17:14
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.

Geändert von SvenLittkowski ( 1. Feb 2011 um 04:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#23

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 31. Jan 2011, 17:19
ThisColor1:=GlowLabel1.Font.Color; EDIT

StringToColor liefert dir aus einem String ein TColor welches Du in einem Longint oder Cardinal ablegen kannst.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (31. Jan 2011 um 17:21 Uhr)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#24

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 1. Feb 2011, 04:49
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 von Delphi 7:
Nun stimmt's!
Dieses Thema kann hiermit beendet werden.

Geändert von SvenLittkowski ( 1. Feb 2011 um 05:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 1. Feb 2011, 11:45
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#26

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 1. Feb 2011, 11:47
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;
btw: StrToInt kann von Haus aus mit Hex-Werten umgehen, wenn das $-Zeichen vorangestellt wird.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#27

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 1. Feb 2011, 16:22
Auch 'ne nette Lösung. Kürzer und wesentlich eleganter als meine.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#28

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 1. Feb 2011, 16:43
schau mal ins Posting #16
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#29

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 2. Feb 2011, 04:00
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#30

AW: Fehler: IF: Kein Teil eienr Menge (Bedingung)

  Alt 2. Feb 2011, 10:09
Auch 'ne nette Lösung. Kürzer und wesentlich eleganter als meine.
Die Lösung ist nicht nur eleganter sondern auch korrekt.

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 ...

Es heißt zwar RGB aber die einzelnen Farbwerte werden im HexCode nicht wie Text sondern wie eine Zahl betrachtet.
Code:
Text:
a
ab
abc
abcd
Wird ein Wort länger, dann "wächst" es nach rechts, aber eine Zahl ...
Code:
Zahl
   1
  12
 123
1234
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 16:14 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