Autor |
Beitrag |
Arbengie
      
Beiträge: 66
|
Verfasst: 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.
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 Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 13.02.2011 um 22:57
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: So 13.02.11 14:19
Arbengie hat folgendes geschrieben : | 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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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 
      
Beiträge: 66
|
Verfasst: So 13.02.11 14:34
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: 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 
      
Beiträge: 66
|
Verfasst: So 13.02.11 15:00
hm yo es geht danke 
|
|
Xion
      

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)
|
Verfasst: 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
|
Verfasst: So 13.02.11 16:27
Das habe ich noch nie gemacht und hatte bisher keine Probleme, zumindest nicht mit der Klasse TIniFiles.
|
|
Tankard
      

Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: 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
      

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)
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 13.02.11 17:31
Webo hat folgendes geschrieben : | 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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
|
|