Autor Beitrag
Arbengie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66



BeitragVerfasst: So 13.02.11 14:13 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: 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.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: 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?

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
Arbengie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66



BeitragVerfasst: So 13.02.11 14:34 
habe win XP
Webo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 577
Erhaltene Danke: 14

Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
BeitragVerfasst: 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.

_________________
Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.

Für diesen Beitrag haben gedankt: Arbengie
Arbengie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66



BeitragVerfasst: So 13.02.11 15:00 
hm yo es geht danke :)
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: 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.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 13.02.11 16:27 
Das habe ich noch nie gemacht und hatte bisher keine Probleme, zumindest nicht mit der Klasse TIniFiles.
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: So 13.02.11 16:30 
hi
schreib mal was in die ini datei rein mit zb.:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 13.02.11 17:01 
embarcadero 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.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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:
www.delphi-forum.de/viewtopic.php?t=92348
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: So 13.02.11 18:39 
Ich schließe die Datei immer mit Free ab:

ausblenden 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.

_________________
Toleranz ist eine Grundvoraussetzung für das Leben.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.