Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi variable leer?? (https://www.delphipraxis.net/1767-variable-leer.html)

Privateer3000 22. Dez 2002 14:01


variable leer??
 
Einen wunderschönen 4. Advent an alle!

kurz der quell:
Code:
procedure TForm4.RadioGroup1Click(Sender: TObject);
var
ini3: TInifile;
begin
case RadioGroup1.ItemIndex of
0: BGFarbindex := 'clRed';
1: BGFarbindex := 'clYellow';
2: BGFarbindex := 'clBlue';
3: BGFarbindex := 'clWithe';
end;
Ini3:=TIniFile.Create('dat\settings.ini');
    try
    Ini3.WriteString('Farben','BGPreis',BGFarbindex);
    finally
    Ini3.Free;
end;
end;
BGFarbindex ist eine globale variable. soweit so gut.
Es wird auch der entsprechende Eintrag in der ini erstellt.
Aber der Wert ist leer?!was läuft schief??

Grüsse

Alexander 22. Dez 2002 14:24

Gibt er denn einen Fehler aus??

Privateer3000 22. Dez 2002 14:31

alles Banane, hab vergessen die Radiobuttons als Item hinzuzufügen,
oh Gott schlagt mich MAL EINER!

Luckie 22. Dez 2002 14:41

Das: 'clWithe' könnte später unter Umständen zu Fehlern führen.

Privateer3000 22. Dez 2002 14:56

ja White hatte es schon bemerkt, danke Luckie

Privateer3000 22. Dez 2002 15:03

wenn ich jetzt das eingestellte laden will in Formshow:
Code:
...
BGFarbindex:=ReadString('Farben','BGPreis','clMaroon');
for I := 1 to 34 do
      TLabel(FindComponent('Label' + IntToStr(I))).Color:=BGFarbindex) ;
....
meint der Compiler inkompatible Typen TColor und String.wie lös ich das??

Luckie 22. Dez 2002 15:07

Na ja, die Fehlermeldung sagt doch alle. Ein String ist eben kein TColor-Wert. Aber es gibt Funktionen, die das umwandeln können. Kuck mal in der Hilfe.

Privateer3000 22. Dez 2002 15:15

ja Typenumwandlung.
Aber aus einer Ini kann ich doch nur String,Integer oder Bool auslesen.
Also mus die Umwandlung nach der Variablezuweisung geschehen!
Aber wie?
irgendwo muss ein "as TColor" rein,oder nicht?

Sebastian Nintemann 22. Dez 2002 15:16

Ich glaube nicht, dass es eine Funktion zum umwandeln der Farbkonstantennamen als String in TColor gibt. Da eine Farbe (TColor) nichts anderes als eine Integer Zahl ist, kannst du es ja direkt als Integer in die Ini speichern. (type TColor = -$7FFFFFFF-1..$7FFFFFFF;). Da folglich die Konstanten auch nur für Integerzahlen stehen funktioniert folgendes:

Delphi-Quellcode:
ini.WriteInteger('x','y',clWhite);
Gruß, Sebastian

Luckie 22. Dez 2002 15:27

Zitat:

Zitat von Grotesquery
Ich glaube nicht, dass es eine Funktion zum umwandeln der Farbkonstantennamen als String in TColor gibt.

Na dann kuck mal im Index der Hilfe und du wirst StringToColor und ColorToString finden.

Privateer3000 22. Dez 2002 15:49

Yup, du hast recht, den Umwandler gibts wirklich.
Wusst ich ich noch nicht...aber ich lern ja noch :angle2:

Sebastian Nintemann 22. Dez 2002 17:59

Stimmt tatsächlich :mrgreen:
Laut Hilfe sollte man aber, falls es nur um die Color-Konstanten geht und nicht um beliebige Farben im Hex Format als String, lieber IdentToColor bzw. ColorToIdent verwenden. Wobei die Frage ist ob es sinnvoller ist überhaupt umzuwandeln in einen String, speichert man direkt als Integer stellt sich das Problem ja nicht... spielt aber wohl keine Rolle bei so einem kleinen Aufwand. :spin:

Gruß, Sebastian

Privateer3000 22. Dez 2002 18:07

ja genau, aber gut zu wissen.
Für dir 4 Farben reicht die constante.
Aber wieder was dazugelernt.

Grüsse an alle


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