![]() |
Re: IniFile - Auslesen funktioniert nicht
Eigentlich sieht der Code wirklich fast sauber aus.
Zitat:
Zitat:
In solchen Fällen bietet es sich immer an, schrittweise im Debugger vorzugehen - Haltepunkt auf TIniFile.Create - und die lokalen Variablen zu prüfen. Außerdem könntest Du zusätzlich eine Stringliste erzeugen, in die Du nacheinander alle Sections und alle Werte einträgst und mit ShowMessage anzeigen lässt - siehe das Beispiel zu ![]() Gruß Jürgen |
Re: IniFile - Auslesen funktioniert nicht
Also, ich habe in meinem Code jetzt vollgendes stehen:
Delphi-Quellcode:
Die Datei Settings.ini existiert und wenn ich testweise ein Memo1.Ls.LoadFromFile('Settings.ini'); zeigt er mir den Inhalt auch an.
IniDatei := TIniFile.Create('Settings.ini');
try len := IniDatei.ReadInteger('Global', 'EQ', 0); ShowMessage(IntToStr(len)); finally FreeandNil(IniDatei); end; Dennoch kommt er zum ShowMessage und Zeigt mir 0 an! Eine Exception wird auch nicht ausgelöst, das Programm läuft weiter und der Compiler/Debugger meckert auch nicht [EDIT] Hab jetzt mal nen Haltepunkt bei try gesetzt, Bei IniDatei Zeigt er mir jetzt "IniDatei = ()" an. Was bedeutet das, das nicht zugewiesen ist? Dennoch bringt er keine Exception. [/EDIT] |
Re: IniFile - Auslesen funktioniert nicht
Versuchs mal mit
Delphi-Quellcode:
INI-dateien werden normalerweise im Windows-Ordner gespeichert, also versucht
IniDatei := TIniFile.Create(ExtractFilePath(paramstr(0))+'Settings.ini');
Delphi-Quellcode:
z.B. C:\Windows\Settings.ini zu laden.
IniDatei := TIniFile.Create('Settings.ini');
|
Re: IniFile - Auslesen funktioniert nicht
Bevor wir jetzt noch tagelang weiter raten: füge bitte die folgende Prozedur in dein Programm ein und rufe sie dort auf, wo du den Wert aus der Ini-Datei laden möchtest. Teile uns dann bitte mit, was in der Messagebox steht, die beim Aufruf erscheint.
Delphi-Quellcode:
Gruß Hawkeye
procedure CheckIni;
const SECTION = 'Global'; KEY = 'EQ'; var Ini : TIniFile; FileName : string; Value : Integer; begin FileName := ExtractFilePath(ParamStr(0)) + 'Settings.ini'; if FileExists(FileName) then begin Ini := TIniFile.Create(FileName); try if Ini.SectionExists(SECTION) then if Ini.ValueExists(SECTION, KEY) then begin Value := Ini.ReadInteger(SECTION, KEY, 0); ShowMessage ('Der gelesene Wert: ' + IntToStr(Value)); end else ShowMessage ('Der Schlüssel "' + KEY + '" existiert nicht!') else ShowMessage ('Der Abschnitt "' + SECTION + '" existiert nicht!'); finally Ini.Free; end; end else ShowMessage ('Die Datei "' + FileName + '" existiert nicht!'); end; |
Re: IniFile - Auslesen funktioniert nicht
@Thanatos81: Hat funktioniert danke! Jetzt zeigt er mir den Richtigen Wert an!
Dank an alle! Was ist eigentlich der Unterschied zwischen IniDatei.Free und FreeandNil(IniDatei)? |
Re: IniFile - Auslesen funktioniert nicht
Der zweite Befehl ist besser, da dem Objekt auch noch zusätzlich nil zugewiesen wird, wie der Name der Funktion schon sagt.
|
Re: IniFile - Auslesen funktioniert nicht
... wobei, wenn es sich um eine lokale Variable handelt (ini) und danach nix mehr relevantes an Code kommt, was die INI betrifft, dann reicht ein .Free vollkommen.
|
Re: IniFile - Auslesen funktioniert nicht
Dann schon, ich zB hab mir aber trotzdem angewöhnt auch in solchen Fällen FreeAndNil zu verwenden um es dann an anderen Stellen automatisch zu nutzen und nicht "aus Versehen" .Free zu verwenden.
|
Re: IniFile - Auslesen funktioniert nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 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