Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#11

Re: IniFile - Auslesen funktioniert nicht

  Alt 20. Aug 2006, 11:29
Eigentlich sieht der Code wirklich fast sauber aus.
Zitat von Khabarakh:
Zitat von mkinzler:
dennoch gehört das Create nicht ins try...Warum nicht ?
Weil's keinen Sinn ergibt?
Überleg doch mal, was passiert, sollte eine Exception im ctor ausgelöst werden. Der Ini-Variablen wird kein Pointer zugewiesen, da der Code sofort ins Finally springt. Und da Delphi keinen lokalen Variablen initialisiert, knallt es höchstwahrscheinlich dann beim Aufruf von Free, weil IniDatei sonstwohin zeigen kann.
Also ändern wie folgt (im übrigen unveränderte Kopie):
Zitat von Cyberbob:
Mein Code:
Delphi-Quellcode:
IniDatei := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')); // verschoben
try
  len := IniDatei.ReadInteger('Global', 'EQ', 0);
  ShowMessage(IntToStr(len));
finally
  IniDatei.Free;
end;
Was mach ich falsch, ich wüsste nicht, was ich anderst gemacht haben sollte als sonst...
Ich sehe auch keinen Fehler (und die anderen Autoren ebenfalls nicht wirklich) - natürlich unter der Voraussetzung, dass die Ini wirklich im Programmverzeichnis liegt.

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 Delphi-Referenz durchsuchenTIniFile.ReadSections.

Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat