Entwickler-Ecke

Dateizugriff - Kein Zugriff auf Ini Datei


Tony-S - Di 11.05.10 22:38
Titel: Kein Zugriff auf Ini Datei
Hallo Forum ich weiß nicht mehr weiter:

Ich kann weder eine Ini Datei in einem vorgegeben Pfad erstellen:


Delphi-Quelltext
1:
2:
3:
const
  AppDataRootDir = '\Überordner';
  AppDataProjectDir = '\Settings';



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TfrmOptionen.FormCreate(Sender: TObject);
var
PathSettings: String;
begin
PathSettings := GetSpecialFolder (CSIDL_Appdata)+ AppDataRootDir + AppDataProjectDir;
ini:=TIniFile.Create(PathSettings+'\Settings.ini');
  try
  cbNewSnippet.Checked := Ini.ReadBool('MainSettings''cb1', False);
  cbClipboard.Checked := Ini.ReadBool('MainSettings''cb2', True);
  cbStrg.Checked := Ini.ReadBool('MainSettings''cb3', False);
  cbMouseUp.Checked := Ini.ReadBool('MainSettings''cb4', True);

  finally
  ini.Free ;
  end;

end;


Denn es wird einfach kein Ordner erstellt... und sobald ich versuche zu speichern:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TfrmOptionen.btnSaveclick(Sender: TObject);
var PathSettings: String;
begin

PathSettings := GetSpecialFolder (CSIDL_Appdata)+ AppDataRootDir + AppDataProjectDir;
ini:=TIniFile.Create(PathSettings+'\Settings.ini');

    try
    Ini.WriteBool('MainSettings''cb1', cbNewSnippet.Checked);
    Ini.WriteBool('MainSettings''cb2', cbClipboard.Checked);
    Ini.WriteBool('MainSettings''cb3', cbStrg.Checked);
    Ini.WriteBool('MainSettings''cb4', cbMouseUp.Checked);

    finally
    ini.Free;
    end;
end;


erhalte ich diesen Fehler

fail

Das einzige was ich nicht verstehe, mein Benutzerordner hat ein kleines Schloss am Ordnersymbol, den Schreibschutz aufzuheben habe ich schon versucht.. es reagiert irgendwann nicht mehr - mein anderes Programm nutzt aber auch diese Art des Speicherns und kann Ordner UND ini files erstellen, daran liegts also nich ...

Wäre klasse wenn jemand helfen kann ich weiß überhaupt nicht mehr weiter :/

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 12.05.2010 um 00:31


jaenicke - Di 11.05.10 22:56

Ich sehe nirgends wo du versuchst den Ordner zu erstellen. Hast du vergessen den Code dazu zu posten? :gruebel:

Denn ohne dass du den Ordner mit ForceDirectories z.B. erstellst, kannst du logischerweise auch nicht darauf zugreifen.

Für die automatische Verwaltung der Einstellungen gibt es von mir ja auch was:
http://www.delphi-forum.de/viewtopic.php?t=92348


Tony-S - Di 11.05.10 23:23

Ja... irgendwas war da doch.... :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if not DirectoryExists(PathSettings) then
  begin
  ForceDirectories(PathSettings);

    if fileexists(PathSettings+'\'+'Settings.ini') = False then
    begin
    AssignFile(f, PathSettings+'\'+'Settings.ini');
    Rewrite(f);
    Write(f, '');
    CloseFile(f);
    end;

  end;


Tud mir leid, manchmal schein ich blind zu sein ;) - danke vielmals.


jaenicke - Mi 12.05.10 05:48

Es reicht auch einfach das ForceDirectories dazuzuschreiben. Nur die eine Zeile, mehr nicht, eine Prüfung ob das Verzeichnis existiert passiert in diesem Befehl bereits. Die Ini-Datei wird auch automatisch erstellt.