Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Color aus Ini funzt nicht (https://www.delphipraxis.net/20689-color-aus-ini-funzt-nicht.html)

TheMiller 21. Apr 2004 17:10


Color aus Ini funzt nicht
 
Hi Leute!

Ich habe ein simples Problem. Ich will eine Color in eine Ini speichern und laden...

Ich speichere mit:

Delphi-Quellcode:
ini.WriteString('Edit','Color',ColorToString(ColorDialog1.Color));
und will mit
Delphi-Quellcode:
Label1.Color:=ini.ReadString('Edit','Color',ColorToString(Color));
oder
Label1.Color:=ini.ReadString('Edit','Color',ColorToString(text));
laden. Doch bei den (und anderen weiteren Versuchen kommt die Meldung vomn Compiler
Delphi-Quellcode:
Inkompatible Typen 'TColor' und 'String'
Ich lasse mir beim Programmstart die Farbe aus der Ini anzeigen. Und zwar so:
Delphi-Quellcode:
ShowMessage(ini.ReadString('Edit','Color',ColorToString(color)));
und das funzt. Es liegt also an der lade-prozedur.

Wo ist mein Fehler?

THX im Vorraus

Markus K. 21. Apr 2004 17:17

Re: Color aus Ini funzt nicht
 
Hallo DJ-SPM,
versuche es mal so. Der letzte Parameter gibt einen Default-Wert an, wenn die Session bzw. der Key in der Ini-Datei nicht vorhanden
Delphi-Quellcode:
Label1.Color:=StringToColor(ini.ReadString('Edit','Color',''))
Tschüß Markus

Christian Seehase 21. Apr 2004 17:17

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

Du müsstest den ausgelesenen String auch wieder in eine Farbe umwandeln.

Delphi-Quellcode:
Label.Color := StringToColor(ini.ReadString(....));

TheMiller 21. Apr 2004 17:25

Re: Color aus Ini funzt nicht
 
Sorry Leute,

geht beides nicht...

Christian Seehase 21. Apr 2004 17:27

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

Zitat:

Zitat von DJ-SPM
geht beides nicht...

liesse sich das konkretisieren?

TheMiller 21. Apr 2004 17:29

Re: Color aus Ini funzt nicht
 
Ja klar!

Also, der Compiler meckert nicht, aber das Bild ändert sich auch nicht...

Christian Seehase 21. Apr 2004 17:42

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

hast Du es nach dem Zuweisen der Farbe mit Application.ProcessMessages versucht?

Da Du ja auch keine Exception bekommst, wurde offensichtlich ein gültiger String für StringToColor übergeben.

TheMiller 21. Apr 2004 17:44

Re: Color aus Ini funzt nicht
 
Ich habe das im FormActivate-Ereignis stehen. Es ist Form5.

Christian Seehase 21. Apr 2004 17:48

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

auch wenn ich das so einbaue geht's bei mir problemlos :gruebel:

TheMiller 21. Apr 2004 17:50

Re: Color aus Ini funzt nicht
 
ich schau nochmal nach. Moment bitte

TheMiller 21. Apr 2004 17:53

Re: Color aus Ini funzt nicht
 
So funzt es nicht:

Delphi-Quellcode:
Label1.Color := StringToColor(ini.ReadString('Edit','Color',''));
so auch nicht

Delphi-Quellcode:
Label1.Color := StringToColor(ini.ReadString('Edit','Color',text));
so kommt exeption Inkompatible Typen

Delphi-Quellcode:
Label1.Color :=(ini.ReadString('Edit','Color',StringToColor(text));
Hm... seltsam... :?:

Christian Seehase 21. Apr 2004 18:37

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

und was steht in der INI?

TheMiller 21. Apr 2004 18:40

Re: Color aus Ini funzt nicht
 
Folgendes:

Delphi-Quellcode:
[Edit]
Color=clGray
[OT]...Bei solchen seltsamen Problemen bist du meistens der jenige, der mir hilft. Siehe damals mit dem Wecker...Nur mal so nebenbei :) [/OT]

Christian Seehase 21. Apr 2004 19:58

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

dann kann ich das nicht nachvollziehen.
Ein wenig zusammenhängender Code der's nicht tut wäre jetzt nicht schlecht.

TheMiller 21. Apr 2004 20:12

Re: Color aus Ini funzt nicht
 
Das ist der code der nicht funzt

Delphi-Quellcode:
procedure TEditTag.FormActivate(Sender: TObject);
var ini:Tinifile;
begin
  ini:=TInifile.Create(ExtractFilePath(ParamStr(0))+'Settings.ini');
try
  Image1.Picture.LoadFromFile(ini.ReadString('EditTag','Background',text));
  finally
    ini.free;
  end;
end;
Der Code zum speichern der Faber funzt ja, wie man an der Ini-File sieht.

Danke erstmal

Christian Seehase 21. Apr 2004 20:16

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

Delphi-Quellcode:
Image1.Picture.LoadFromFile(ini.ReadString('EditTag','Background',text));
:shock:

kannst Du mir auch verraten, was das mit dem Fehler beim Ändern der Hintergrundfarbe eines Labels zu tun hat?

:gruebel: :stupid:

TheMiller 21. Apr 2004 20:36

Re: Color aus Ini funzt nicht
 
:shock: *g* ähm...ja....

Mein Fehler :oops:

Also. Der Code zum Laden der Farbe habe ich wieder entfernt. Ich habe also nur im ColorDialog1 die Farbe, die ich auswähle. Sie wird gleich in die Ini gespeichert.

Den Code zum Laden der Farbe habe ich bisher immer in OnActivate oder auch mal, nur zu Testzwecken in Image1.Click geschrieben. Bei beiden hat sich nichts getan.

*durchdreh*

Christian Seehase 21. Apr 2004 20:39

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

dann schreib' doch mal, zu Testzwecken

Delphi-Quellcode:
ShowMessage(ini.ReadString('edit','color','KEINE'));
in Deine ImageOnClick Routine.

TheMiller 21. Apr 2004 20:51

Re: Color aus Ini funzt nicht
 
Ich habe deinen Quelltext übernommen (aber in OnActivate)
und es kam die Message

Delphi-Quellcode:
KEINE
was soll mir das bringen, wenn ich fragen darf?

Christian Seehase 21. Apr 2004 21:22

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

jetzt weisst Du, dass aus der INI der Wert nicht ausgelesen wurde.
Also stimmt irgendwas beim Auslesen der INI nicht (da der Inhalt derselben ja ok war)

TheMiller 21. Apr 2004 21:24

Re: Color aus Ini funzt nicht
 
hm, hört sich logisch an...

nur was stimmt nicht. ich meine ini's beherrsche ich eigentlich... ist schon seltsam...

Christian Seehase 21. Apr 2004 21:49

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

eine Sache die ich grundsätzlich mache:

Für die Sections und Idents verwende ich immer Konstanten, um Probleme durch Tippfehler zu vermeiden.
Es gibt dann keine Differenzen zwischen den Angaben beim Lesen und Schreiben, worauf so mancher Fehler bei der Benutzung von Ini Dateien zurückzuführen ist.

Im Moment kann ich mir eigentlich keine andere Ursache denken.

TheMiller 23. Apr 2004 20:35

Re: Color aus Ini funzt nicht
 
Hey,

Ich habe DIE Lösung. Also, falls noch wer das Problem haben sollte, hier der Code:

Delphi-Quellcode:
Label1.Font.Color:=StringToColor(ini.ReadString('Edit','Color',text));
Mit den vorherigen Codes hat es funktioniert, dass er in die ini-schrieb, und richtig ausgelesen hat, hat aber die Labels nicht gefärbt. Man musste nur noch das Font dazwischen setzten. Dann gehts.

Viel Spaß :bounce1:

Christian Seehase 23. Apr 2004 22:14

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

Zitat:

Zitat von DJ-SPM
Man musste nur noch das Font dazwischen setzten. Dann gehts.

ööhmm... ähhh... *hüstel* :gruebel: :shock:


Das dürfte den Fehler, dass Du bei ShowMessage 'KEINE' angezeigt bekommen hast, aber kaum beseitigt haben.
Der Unterschied ist nur, dass Du jetzt die Schrift-, statt der Hintergrundfarbe änderst. :stupid:

Vermutlich wird jetzt die Farbe, die Du über den Inhalt von Text angegeben hast als Schriftfarbe verwendet.
Trag hier doch mal einen festen, ungültigen, Text ein (z.b. 'KEINE' ;-) )

TheMiller 24. Apr 2004 09:09

Re: Color aus Ini funzt nicht
 
Ohweia, ich glaube, wir haben die ganze Zeit aneinander vorbeigeredet.... Ich wollte ja die Schriftfarbe aus der Ini-Datei laden...

Hatte ich das nicht erwähnt? Also, wenn nicht, dann tuts mir echt leid :oops:

Jens Schumann 24. Apr 2004 10:45

Re: Color aus Ini funzt nicht
 
Hallo,
Du kannst Color auch in einen Integer casten und mit TInifile.Read-/WriteInteger lesen o. schreiben.

Christian Seehase 24. Apr 2004 12:24

Re: Color aus Ini funzt nicht
 
Moin DJ-SPM,

das ist ja nicht das Problem.
Ob Du nun die Schrift- oder Hintergrundfarbe so setzen wolltest spielt keine Rolle, wenn das Auslesen aus der INI fehlschlägt, und das dass jetzt auf einmal funktioniert ist das was mich verwundert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 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