AGB  ·  Datenschutz  ·  Impressum  







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

Ini auslesen und Checkbox auf True setzen?

Ein Thema von AlexII · begonnen am 3. Jan 2010 · letzter Beitrag vom 4. Jan 2010
Antwort Antwort
Seite 1 von 3  1 23      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:30
Hallo,

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

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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:34
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:35
Hallo

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 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.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:38
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:39
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;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:40
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

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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:40
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).
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:41
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:45
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Ini auslesen und Checkbox auf True setzen?

  Alt 3. Jan 2010, 20:45
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:34 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