Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ini auslesen und Checkbox auf True setzen? (https://www.delphipraxis.net/145527-ini-auslesen-und-checkbox-auf-true-setzen.html)

AlexII 3. Jan 2010 19:30


Ini auslesen und Checkbox auf True setzen?
 
Hallo,

ich habe ein Problem, wer kann mir helfe? Ich lese wie folgt einen Wert aus der .ini aus:

Delphi-Quellcode:
ProxyStatus := Ini.ReadBool('Default', 'ProxyStatus', True);
Wenn aber die .ini-Datei noch nicht existiert hat ProxyStatus keinen Zustand, also nicht True und nicht False, deswegen wird eine Checkbox immer leer bzw. False sein, ich will sie aber True haben. Im Objektinspektor habe ich Checked der Checkbox auf True gesetzt, beim öffnen des Programms ist sie aber immer False.

Weiß nicht mehr wie ich weiter komme.

Jens Hartmann 3. Jan 2010 19:34

Re: Ini auslesen und Checkbox auf True setzen?
 
Hallo Alex,

das ist richtig. Prüf die INI-Datei mit FileExist und ansonsten abbrechen.

[EDIT] Prüf nicht auf TRUE oder FALSE, das kann zu Problemen führen, schau Dir mal folgenden Seite an...

Prüfen auf Boolean

Gruß Jens

Matze 3. Jan 2010 19:35

Re: Ini auslesen und Checkbox auf True setzen?
 
Hallo

Zitat:

Zitat von AlexII
Wenn aber die .ini-Datei noch nicht existiert hat ProxyStatus keinen Zustand, also nicht True und nicht False

Falsch. Du gibst im 3. Parameter den Standardwert an, der genommen wird, wenn die Ini-Datei bzw. der Eintrag darin nicht existiert. In deinem Fall also "true".

Zitat:

Zitat von AlexII
deswegen wird eine Checkbox immer leer bzw. False sein, ich will sie aber True haben.

Das ist sie auch, wenn du den Status nicht wo anders setzt:

Delphi-Quellcode:
ProxyStatus := Ini.ReadBool('Default', 'ProxyStatus', True); // "true", wenn Ini bzw. der Eintrag nicht existiert
CheckBox1.Checked := ProxyStatus;
Grüße, Matze

Edit @Jens: Was? Wieso sollte ProxyStatus dann undefiniert sein? Dann wäre der Standardwert doch überflüssig. :gruebel:

AlexII 3. Jan 2010 19:38

Re: Ini auslesen und Checkbox auf True setzen?
 
Zitat:

Falsch. Du gibst im 3. Parameter den Standardwert an, der genommen wird, wenn die Ini-Datei bzw. der Eintrag darin nicht existiert. In deinem Fall also "true".
Ne der Wert wird genommen, wenn die ini-Datei existiert, aber der Eintrag nicht, bei mir existiert aber die Datei noch nicht, darum geht es.

AlexII 3. Jan 2010 19:39

Re: Ini auslesen und Checkbox auf True setzen?
 
Also ich habe das so:

Delphi-Quellcode:
if FileExists(UserAppDataDir + AppDataRootDir + AppDataProjectDir + '\Config-t.ini') then
begin
Ini := TIniFile.Create(UserAppDataDir + AppDataRootDir + AppDataProjectDir + '\Config-t.ini');
  try
    ProxyStatus := Ini.ReadBool('Default', 'ProxyStatus', True);
  finally
    Ini.Free;
end;

Jens Hartmann 3. Jan 2010 19:40

Re: Ini auslesen und Checkbox auf True setzen?
 
Zitat:

Zitat von Matze
Edit @Jens: Was? Wieso sollte ProxyStatus dann undefiniert sein? Dann wäre der Standardwert doch überflüssig.

Nein, ich habe nicht gesagt undefiniert, sondern so wie Du gesagt hast, es ist richtig, das Checkbox = true ist, weil das

Delphi-Quellcode:
Ini.ReadBool('Default', 'ProxyStatus', [b]True[/b]);
vorgegeben wurde.

[EDIT]Wenn die Datei aber noch nicht existiert, ist der Wert undefiniert, und daher eben das mit Boolean Werten

Gruß Jens

Matze 3. Jan 2010 19:40

Re: Ini auslesen und Checkbox auf True setzen?
 
Aber du erzeugst doch die Ini mit:

Delphi-Quellcode:
Ini := TIniFile.Create(...);
try
  // auslesen
finally
  // ...
end;
Da wird die Ini doch dann angelegt, falls sie nicht existiert, und anschließend geöffnet. Das hat einen nicht existierenden Eintrag zur Folge und somit den Standardwert. Oder irre ich mich?

Edit @Alex: Dann sorge dafür, dass "ProxyStatus" immer definiert ist, das ist generell zu empfehlen. Gib der Variablen bsp. zu Beginn den Standardwert (true).

AlexII 3. Jan 2010 19:41

Re: Ini auslesen und Checkbox auf True setzen?
 
Zitat:

Zitat von Jens Hartmann
das ist richtig. Prüf die INI-Datei mit FileExist und ansonsten abbrechen.

Wie abbrechen, das Programm muss doch laufen, wenn man das erste mal öffnet und die ini noch nicht vorhanden ist.

AlexII 3. Jan 2010 19:45

Re: Ini auslesen und Checkbox auf True setzen?
 
Ich hab schon zig mal ausprobiert, die Checkbox wird auf True gesetzt nur wenn der Eintrag in der ini nicht vorhanden ist, wenn die ini-Datei noch nicht existiert gib's keinen Zustand, ihr könnt das ruhig testen.

Jens Hartmann 3. Jan 2010 19:45

Re: Ini auslesen und Checkbox auf True setzen?
 
Zitat:

Zitat von Alex
Wie abbrechen, das Programm muss doch laufen, wenn man das erste mal öffnet und die ini noch nicht vorhanden ist.

Einmal, stimmt das was Matze gerade gesagt hat, mit dem INI.Create, und anders wäre es auch möglich, das einlesen halt abzubrechen, und im "finally" dein Programm mit den gewünschten Standardwerten zu initialisieren. Oder sehe ich das jetzt falsch.

Entweder Standardwerte direkt ins Programm, somit kein Problem, oder INI.Create, und richtige Standardwerte deinen Quellcode integrieren.

Gruß Jens


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 Uhr.
Seite 1 von 3  1 23      

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