Seite 1 von 1

Vorsicht bei INIRead()!

Verfasst: 11. Januar 2012, 12:38
von klammerauf
Man stelle sich folgenden Code vor:

Code: Alles auswählen

MyIniFile = "stapauf.ini"
IF fFileExist(MyIniFile)
   sErgebnis = INIRead("Sektion","Keyword","",MyIniFile)
END
Es ist eigentlich ganz egal, was in INIRead abgefragt wird, es wird nie etwas gefunden! Und das, obwohl die Datei ja definitiv existiert.

Der Grund dafür liegt in MyIniFile. Hier der ausschlaggebende Part in der Doku:
If only the name of the file is specified, the specified file will be sought in the directory of Windows.
Die Lösung für dieses Problem geht dann so:

Code: Alles auswählen

MyIniFile = ".\stapauf.ini"
Also immer den ganzen Pfad mit angeben. Sonst wird hier nie was gefunden!

Um Probleme mit UAC unter Vista und Win7 zu vermeiden empfehle ich aber eher, die Datei im Verzeichnis SysDir(srCommonAppData) (alle Benutzer) oder SysDir(srAppData) (nur aktueller Benutzer) abzulegen.

Also so:

Code: Alles auswählen

MyIniFile = SysDir(srAppData) + ["\"] + "stapauf\stapauf.ini"
Sebastian

Re: Vorsicht bei INIRead()!

Verfasst: 13. Januar 2012, 10:39
von Lewi
Oder alternativ die Ini-Datei ins Verzeichnis der Programm-EXe zu legen, in der sich die Anwednung befindet mit Zugiff auf das Ini-File über :

MyIniFile = CompleteDir(fExeDir())+ "Prog.ini"

Re: Vorsicht bei INIRead()!

Verfasst: 13. Januar 2012, 10:43
von klammerauf
Nö. Genau das erwähnte UAC wird Zugriffe darauf zu verhindern wissen. Schau dir mal die Hilfe zu INIWrite an, da ist das ganz gut beschrieben.

Sebastian

Re: Vorsicht bei INIRead()!

Verfasst: 13. Januar 2012, 10:57
von Lewi
Ja und nein. Wenn die Exe nicht in einem WIndows-Verzeichnis liegt, dass der speziellen Rechteverwaltung unterliegt (wie.z.B: "d:\Anwendung"), dann gibt es keine Probleme. Jedenfalls bei mit unter XP. Vista und Win 7.