AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Ini.ReadBool(string,string,boolean)

Ein Thema von gfjs · begonnen am 20. Aug 2008 · letzter Beitrag vom 21. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#1

Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 10:17
Hallo Allerseits.

Ich versuche aus einer Ini-Datei folgenden Wert auszulesen:

[Editor]
DirToDisk=false;

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button2: TButton;
    CheckBox2: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses
  IniFiles;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ini : TIniFile;
  b,c : boolean;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Test.Ini');
  try
    CheckBox1.Checked := Ini.ReadBool('Editor', 'DirToDisk', true);
  finally
    ini.Free;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  ini : TIniFile;
  b,c : boolean;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Test.Ini');
  try
    CheckBox1.Checked := Ini.ReadBool('Editor', 'DirToUSB', true);
  finally
    ini.Free;
  end;
end;

end.
Leider ist das Ergebnis nicht das, was ich erwarte. Ich habe aber keinen Hinweis darauf gefunden, was für den dritten Parameter einzugeben ist.

Wer kann mir da auf die Sprünge helfen?

Danke im Voraus.

Jürgen
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 10:24
Der 3. Paramter ist der Default-Wert, alos der wert der zurückgeliefert wird, wenn der Wert in der Ini nicht existiert
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 10:31
Zitat von gfjs:
Ich habe aber keinen Hinweis darauf gefunden, was für den dritten Parameter einzugeben ist.
Klemmt deine F1-Taste?


[edit]

Achya, es darf kein Semikolon am Ende eines Ini-Wertes stehen, außer es gehört zum Wert selbst.

[/edit]
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 10:41
Zitat von Deep-Sea:
Klemmt deine F1-Taste?
Es gibt Aussagen, welche so nicht gemacht werden müssen
Zitat von Deep-Sea:
Achya, es darf kein Semikolon am Ende eines Ini-Wertes stehen, außer es gehört zum Wert selbst.
Was wolltest Du damit eigentlich sagen?

Zum Thema, es ging eigentlich um die Methode Delphi-Referenz durchsuchenValueExists der TIniFile-Klasse. Kam so nicht unbedingt in der Fragestellung rüber, aber egal Mit ValueExists findet man heraus, ob der entsprechende Eintrag in der INI-Datei überhaupt verfügbar ist. Manchmal ist auch dieses Wissen nötig.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 10:47
Zitat von sakura:
Es gibt Aussagen, welche so nicht gemacht werden müssen
Und wie würde es dir besser passen? .......


Zitat von sakura:
Was wolltest Du damit eigentlich sagen?
Zitat von gfjs:
Hallo Allerseits.

Ich versuche aus einer Ini-Datei folgenden Wert auszulesen:

[Editor]
DirToDisk=false;
Das. Wenn hinter false ein Semikolon steht, ist klar, warum ReadBool immer den Defaultwert zurück bringt
(Ach Moment mal, ReadBool prüft auf <> 0 und nicht auf das Wort false, also geht es so gar nicht ...)
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 11:00
Und um solche Fehler zu vermeiden, sollte man Ini-Dateien auch nur von Hand bearbeiten, wenn man weiss was man tut. Ich lass es deswegen immer meine Programme machen

Sherlock
Oliver
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 11:05
@ Deep-Sea

Mein F1-Taste klemmt definitiv nicht und ich habe schon ca. eine Stunde rumprobiert, bevor ich mich an Euch gewandt habe. Das Semikolon war ein Tippfehler in meinem Post - in der Ini-Datei ist kein Semikolon.

Inzwischen habe ich auch festgestellt, dass nicht 'true' oder 'false' eingegeben werden muss, sondern '0' oder '1' - und dann klappt's auch. Und das bringt - zumindest bei mir - auch die F1-Taste nicht ans Licht.

@ Sakura

Vielen Dank für den Tip mit ValueExists

@ Sherlock

Ich bin ja gerade dabei, mir das anzueignen, was ich brauche um künftig ini-Dateien von Hand bearbeiten zu können.

Gruß Jürgen
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 11:52
Die ganze Sache sollte wohl eher so aussehen...
Delphi-Quellcode:
var
  Form1: TForm1;
  Ini : TIniFile;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Test.Ini');
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  Ini.Free;
end;

procedure TForm1.SaveClick(Sender: TObject);
begin
  Ini.WriteBool('Editor', 'DirToUSB', CheckBox.Checked);
end;

procedure TForm1.LoadClick(Sender: TObject);
begin
  CheckBox.Checked:=Ini.ReadBool('Editor', 'DirToUSB', True);
end;

end.
Hier mal noch ein Tutorial für dich
Ini Tutorial
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#9

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 14:48
Zitat von Blackheart:
Die ganze Sache sollte wohl eher so aussehen...
Delphi-Quellcode:
var
  Form1: TForm1;
  Ini : TIniFile;
Um Gottes Willen, nein! Warum sollte man für das Ini-Objekt ein globales Objekt anlegen, völlig lösgelöst von seinem Host? Bitte nicht machen, diese Methode gehört zu einer Zeit vor Objekten, sprich Turbo Pascal 5.0 Spätestens aber seit Delphi 1 sollte man sich an die Gepflogenheiten der OOP halten - globale Variablen gehören (mit wenigen Ausnahmen) nicht dazu.

@Deep-Sea: Ich persönlich finde einen solchen Umgang nicht gerade respektvoll (Wortwahl [hier wenig] und Art-und-Weise etwas zu vermitteln [hier um so mehr]).

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Problem mit Ini.ReadBool(string,string,boolean)

  Alt 20. Aug 2008, 17:01
Zitat von sakura:
Zitat von Blackheart:
Die ganze Sache sollte wohl eher so aussehen...
Delphi-Quellcode:
var
  Form1: TForm1;
  Ini : TIniFile;
Um Gottes Willen, nein! Warum sollte man für das Ini-Objekt ein globales Objekt anlegen, völlig lösgelöst von seinem Host? Bitte nicht machen, diese Methode gehört zu einer Zeit vor Objekten, sprich Turbo Pascal 5.0 Spätestens aber seit Delphi 1 sollte man sich an die Gepflogenheiten der OOP halten - globale Variablen gehören (mit wenigen Ausnahmen) nicht dazu.

@Deep-Sea: Ich persönlich finde einen solchen Umgang nicht gerade respektvoll (Wortwahl [hier wenig] und Art-und-Weise etwas zu vermitteln [hier um so mehr]).

......
Naja eigentlich ging es ja um das schreiben und lesen von Bool ansonsten
magst du recht haben.
Blackheart
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:30 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