Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Arbeitsverzeichnis ; INI-Datei


anno2007 - Sa 21.03.09 17:04
Titel: Arbeitsverzeichnis ; INI-Datei
Hi,
Ich habe einen Ordner, in dem sich alle Dateien befinden (Bilder usw...). Ich möchte aus diesem Ordner eine INI-Datei auslesen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
uses IniFiles;

procedure TForm1.FormShow(Sender: TObject);
var ini: TIniFile;
begin
  ini:=TIniFile.Create('konfig.ini');
  try
    form1.left:=ini.ReadInteger('Fensterposition','Left',0);
    form1.top:=ini.ReadInteger('Fensterposition','Top',0);
  finally
    ini.free;
  end;
end;

(Beispielcode von http://www.delphi-treff.de/tutorials/datenspeicherung/ini-dateien/page/4/).

Da benutzen sie keinen Pfad: ini:=TIniFile.Create('konfig.ini');
Das funktioniert bei mir allerdings nicht, ich muss immer den ganzen Pfad mit angeben, sonst gibt er mir zurück, dass die Datei nicht gefunden wurde. Wie kann ich das ändern?

Danke,
anno2007


Gausi - Sa 21.03.09 17:08

Gib den ganzen Pfad an. Das sollte man immer tun. Wenn du den Ordner deiner Anwendung bestimmen willst, um die Ini auch auf anderen Systemen zu finden: ExtractFileDir(ParamStr(0));


Chemiker - Sa 21.03.09 17:16

Hallo anno2007,

ich würde allerdings den Anwendungsordner dafür verwenden.

Bis bald Chemiker


anno2007 - Sa 21.03.09 17:18

@Gausi, du meinst also immer so:


Delphi-Quelltext
1:
2:
  path := ExtractFileDir(ParamStr(0));
  playfield.picture.LoadFromFile(path + '\Spielfeld.bmp');


Funktioniert perfekt, ich danke :).

@Chemiker, wie meinst du das?

anno2007


jaenicke - Sa 21.03.09 17:23

user profile iconanno2007 hat folgendes geschrieben Zum zitierten Posting springen:
@Chemiker, wie meinst du das?
Er meint das Anwendungsdatenverzeichnis. Denn in dem Verzeichnis, in dem deine Exe liegt (normalerweise ja irgendwo unter c:\programme), hast du normalerweise keine Schreibrechte. Deshalb wirst du dann Fehler bekommen, wenn du versuchst dort deine Ini zu speichern.
http://www.delphi-library.de/viewtopic.php?p=548600

Bei einer portablen Anwendung ist so etwas natürlich richtig, aber bei einer installierten nicht. Am besten ist es, es dem Benutzer zu überlassen und z.B. zuerst im eigenen Verzeichnis und sonst im Anwendungsdatenverzeichnis zu schauen.
Liegt an beiden Orten keine INI, dann kann man ja den Benutzer fragen wo sie hin soll.


anno2007 - Sa 21.03.09 17:25

Die INI ist nur dafür da, um ausgelesen zu werden.
Ist das dann so ok, oder bietet es sich an vielleicht eine bessere Datenstruktur zu nehmen.
Ich kenne bis jetzt nur INIs.


Chemiker - Sa 21.03.09 17:28

Hallo anno2007,

ganz einfach, Du wirst unter einem eingeschränkten Benutzerkonto Schwierigkeiten bekommen die Datei abzuspeichern.

Der beste Platz für INI-Dateien ist unter:
\Dokumente und Einstellungen\User\Anwendungsdaten

Bis bald Chemiker


jaenicke - Sa 21.03.09 17:46

user profile iconanno2007 hat folgendes geschrieben Zum zitierten Posting springen:
Die INI ist nur dafür da, um ausgelesen zu werden.
Ist das dann so ok, oder bietet es sich an vielleicht eine bessere Datenstruktur zu nehmen.
Ich kenne bis jetzt nur INIs.
Das hat nichts mit INI oder nicht INI zu tun, nur mit dem Verzeichnis.

Wenn die INI nur gelesen, aber nicht geschrieben wird, dann ist das Verzeichnis der Exe vollkommen in Ordnung. Du solltest nur nicht versuchen in dieses zu schreiben.


anno2007 - Sa 21.03.09 19:03

Ja, das das nix mit der INI zu un hat ist klar ;).
Ich wollte nur generell wissen, ob es eine Datenstruktur gibt, die ich besser verwendet hätte.
Allerdings hab ich die INI jetzt schon komplett eingebaut und werde nichts mehr ändern dadran, weil es so gut funktioniert :).

Dann bedanke ich mich nochmal bei allen die mir geholfen haben :flehan:.

anno2007