Entwickler-Ecke

Dateizugriff - INI-Datei im Programm-Verzeichnis


Cyberbob - Fr 18.10.02 22:21
Titel: Re: Benutzung von INI-Files (INI-Dateien)
Chatfix hat folgendes geschrieben:




Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
ini := TIniFile.Create('c:\meineini.ini');
     // INI erstellen und falls vorhanden initialisieren
try
  ini.WriteString('Sektion1','Eigenschaft1','Dein String');
     // String in Sektion1 unter Eigenschaft1 abspeichern
  ini.WriteInteger('Sektion2','Eigenschaft2',1234);
     // Intergerwert (1234) in Sektion2 unter Eigenschaft2 abspeichern
finally
  ini.Free;
     // Variable ini wieder freigeben
end;



Hierzu habe ich eine Frage, wie kann ich das machen, das die ini Datei im selben Verzeichnis erstellt, bzw. ausgelesen wird, in der das Hauptprog. ist?


DeCodeGuru - Fr 18.10.02 22:44

Wie man das Verzeichnis des Hauptprogramms ermittelt, wurde im Forum schon einige Male besprochen. Hier haste aber nochmal ein Beispiel:


Quelltext
1:
2:
3:
4:
5:
6:
7:
ini := TIniFile.Create(ExtractFilePath+'meineini.ini'); //nur diese Zeile muss geändert werden
try 
  ini.WriteString('Sektion1','Eigenschaft1','Dein String'); 
  ini.WriteInteger('Sektion2','Eigenschaft2',1234); 
finally 
  ini.Free; 
end;


Cyberbob - Fr 18.10.02 22:58

ah, nun funktioniert es, ich hatte es immer mit '..\datei.ini ' versucht


Cyberb 8) b


Delete - Sa 19.10.02 08:51

Cyberbob hat folgendes geschrieben:
ah, nun funktioniert es

Wirklich? Wenn ich mir die Zeile aus DeCodeGurus Quelltext so ansehe:
DeCodeGuru hat folgendes geschrieben:

Quelltext
1:
ini := TIniFile.Create(ExtractFilePath+'meineini.ini');                    

dann hoffe ich, du hast den Fehler selbsttätig ausgebessert?

DeCodeGuru: Du hast recht mit deinem Kommentar:
Zitat:

Quelltext
1:
//nur diese Zeile muss geändert werden                    

Unbedingt sogar!
Ab in die Ecke, und schäm dich! :wink:

Noch ein genereller Nachtrag -
Wenn die INI-Datei nicht bloß im selben Verzeichnis wie das Programm liegt, sondern wenn sie auch den selben Dateinamen hat (nur eben die Endung ".ini"), dann gibt´s also simpelste aller Zugriffsmöglichkeiten noch diese:

Quelltext
1:
ini := TIniFile.Create(ChangeFileExt(paramstr(0),'.ini'));                    


DeCodeGuru - Sa 19.10.02 11:11

shit, ich habe den Parameter vergessen :oops: Tut mir leid. Stand wohl etwas aufm Schlauch. Also Parameter mustse halt dann ParamStr(0) oder Application.Exename übergeben (Wenn du mit der VCL codest).


Delete - Sa 19.10.02 12:49

DeCodeGuru hat folgendes geschrieben:
shit, ich habe den Parameter vergessen :oops: Tut mir leid. Stand wohl etwas aufm Schlauch.

Na gut. Darfst wieder aus der Ecke rauskommen.

Zitat:
Also Parameter mustse halt dann ParamStr(0) oder Application.Exename übergeben (Wenn du mit der VCL codest).

Hm, obwohl ... :wink: ... da man "paramstr(0)" auch in der VCL verwenden kann (weil "Application.ExeName" strenggenommen nichts anderes ist), kommst du bitte rückwärts aus der Ecke raus ... :twisted:


matze - Sa 19.10.02 13:01

es würde auch klappen wenn du .\meine.ini reintippen würdest !!!


DeCodeGuru - Sa 19.10.02 14:10

Zitat:
Hm, obwohl ... ... da man "paramstr(0)" auch in der VCL verwenden kann (weil "Application.ExeName" strenggenommen nichts anderes ist), kommst du bitte rückwärts aus der Ecke raus ...


*Schnief* :mrgreen:


Delete - Sa 19.10.02 15:21

matze hat folgendes geschrieben:
es würde auch klappen wenn du .\meine.ini reintippen würdest !!!


Aber nur, wenn du nachher mit deiner Ini-Datei Verstecken spielen willst.


Delete - Sa 19.10.02 16:46

Ich glaube, wir müssen matze halt noch mal sagen, dass der Punkt nicht das Programmverzeichnis sondern das Arbeitsverzeichnis ist.

matze: der Punkt ist das Arbeitsverzeichnis, in dem das Programm aktiv wird. Wenn die viel Glück hast, ist es zufällig mit dem Programmverzeichnis der Exe identisch. Aber schon die Anweisung:

Quelltext
1:
SetCurrentDir('C:\SonstWoHin');                    

irgendwo im Programm ändert die ganze Sache. Wenn du nach so einer Anweisung versuchst, deinen Vorschlag umzusetzen, dann wirst du sehen, dass es nicht klappt, weil

Quelltext
1:
.\meine.ini                    

dann nämlich identisch mit

Quelltext
1:
C:\SonstWoHin\meine.ini                    

ist.

An "paramstr(0)" + "ExtractFilePath" führt also kein Weg vorbei, wenn du wissen willst, wo die EXE liegt.


matze - Sa 19.10.02 20:04

echt ?? uups !!! Shit !!!

Man lernt halt nie aus !!!

[ganz nebenbei: jetzt weiss ich acuh warum ein paar proggis von mir auf manchen systemen rumzicken !!! :oops:]


Delete - Sa 19.10.02 21:30

jetzt weiß ich auch, wessen Programme ich mal lieber nicht testen werde ... :wink:


DeCodeGuru - Sa 19.10.02 21:32

sei nicht so gemein zu ihm :mrgreen: :wink:


Delete - So 20.10.02 04:07

:mrgreen:
Das ist der Zynissmus von Mathias. Einfach nicht auif die Goldwaage legen und drüber lächeln. :wink:


Delete - So 20.10.02 09:12

Genau!

Ich will hier ja nicht wirklich jemanden beleidigen ... abgesehen davon, kann ich auch einstecken (manchmal muss ich das sogar :wink:). Was soll´s ...


matze - So 20.10.02 10:18

mooooment mal !!! 5 min, nachdem ich das gelesen hab, hab ich sämtliche porggis von mir umgebaut !!! also bitte nicht meckern !!! :eyes:


Delete - So 20.10.02 11:42

Das war ja auch nicht verkehrt, matze.
Und meinen Spruch wirst du mir ja wohl nicht übelnehmen? :?

:wink:


matze - So 20.10.02 12:40

nein, ich nehm dir das nicht übel.

Ich schliesse mich einfach der meinug von luckie an:

Luckie hat folgendes geschrieben:
Das ist der Zynissmus von Mathias. Einfach nicht auif die Goldwaage legen und drüber lächeln.


DeCodeGuru - So 20.10.02 13:00

Zitat:
Das ist der Zynissmus von Mathias. Einfach nicht auif die Goldwaage legen und drüber lächeln.


Gut zu wissen :wink: