Entwickler-Ecke

Dateizugriff - .Ini wird nich erstellt.


Arbengie - So 13.02.11 14:13
Titel: .Ini wird nich erstellt.
Hi ich versuche eine .Ini Datei zu erstellen, aber sie wird einfach nich erstellt.
Und sie sollte in den Ordner rein, wo die .exe ist.


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

var
  ini: TIniFile;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'values.ini');
end;



Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 13.02.2011 um 22:57


Webo - So 13.02.11 14:19

user profile iconArbengie hat folgendes geschrieben Zum zitierten Posting springen:
Und sie sollte in den Ordner rein, wo die .exe ist.

Und das ist gleich ein möglicher Grund. Unter Windows Vista/Windows 7 haben Anwendungen ohne Administratorrechte nicht auf alle Ordner Schreibrechte - für sowas ist das %APPDATA%-Verzeichnis gedacht.


Tranx - So 13.02.11 14:23

Gut zu wissen. Dann werde ich das mal bei meinen Programmen umsetzen. Wie ist es aber mit Programmen, die nicht lokal, sondern auf Netzlaufwerken laufen?


Arbengie - So 13.02.11 14:34

habe win XP


Webo - So 13.02.11 14:40

So, mal eben getestet. Es scheint erst gespeichert zu werden, wenn du den Inhalt der Datei änderst. Als ich ini.WriteString('1','2','3'); einfügte schrieb er die Datei auch in das angegebene Verzeichnis.


Arbengie - So 13.02.11 15:00

hm yo es geht danke :)


Xion - So 13.02.11 15:22

Wenn ich mich nicht irre, solltest du nach jedem Arbeiten mit einer Ini-Datei

Ini.UpdateFile;

aufrufen, damit die Änderungen auch wirklich (immer) gespeichert werden. So auch beim Erstellen der Datei.


Delete - So 13.02.11 16:27

Das habe ich noch nie gemacht und hatte bisher keine Probleme, zumindest nicht mit der Klasse TIniFiles.


Tankard - So 13.02.11 16:30

hi
schreib mal was in die ini datei rein mit zb.:


Delphi-Quelltext
1:
ini.WriteBool ('Section','Varname',True);                    


dann sollte die ini datei da sein, sonst wird nix angelegt.


Edit:

komisch eben waren die beitraege noch nicht da, bin wohl noch nicht ganz wach, war gestern trinken :)


Xion - So 13.02.11 17:01

embarcadero [http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/DE/html/delphivclwin32/IniFiles_TIniFile_UpdateFile.html] hat folgendes geschrieben:
Mit UpdateFile können gepufferte Lese- und Schreibvorgänge der INI-Datei auf einem Datenträger abgelegt werden. UpdateFile ist unter Windows 9x von Nutzen, hat jedoch keine Auswirkungen unter Windows NT, da Schreib- und Lesevorgänge von INI-Dateien unter Windows NT nicht gepuffert werden.


jaenicke - So 13.02.11 17:31

user profile iconWebo hat folgendes geschrieben Zum zitierten Posting springen:
Und das ist gleich ein möglicher Grund. Unter Windows Vista/Windows 7 haben Anwendungen ohne Administratorrechte nicht auf alle Ordner Schreibrechte - für sowas ist das %APPDATA%-Verzeichnis gedacht.
Und wer sich nicht darum kümmern möchte, ob der Benutzer gern XML-Dateien oder die veralteten INIs haben will und wo er sie speichern möchte, kann meine entsprechenden Klassen nutzen:
http://www.delphi-forum.de/viewtopic.php?t=92348


Tranx - So 13.02.11 18:39

Ich schließe die Datei immer mit Free ab:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
   IniFile := TIniFile.Create(Dateiname);
   with Inifile do
   begin
     WriteString(....);
     :
     free;
   end;
   :


Das steht auch so in der Form in den Beispielen der Hilfe.


jaenicke - So 13.02.11 18:53

Das ist ja auch richtig so, das Objekt muss natürlich wieder freigegeben werden.

Nur das with sieht unschön aus.