Vorsicht bei INIRead()!

Gelöstes und einfache Beispiele
Antworten
Benutzeravatar
klammerauf
Member
Beiträge: 116
Registriert: 28. November 2010, 15:11
Wohnort: bei Karlsruhe
Kontaktdaten:

Vorsicht bei INIRead()!

Beitrag 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
--
WinDev 23, WM Apps für Android und iOS, Anwendungen für Windows CE Mobile Barcode Scanner, Python 3 mit Oracle

Lewi
Member
Beiträge: 74
Registriert: 3. September 2010, 14:45
Wohnort: Hamburg
Kontaktdaten:

Re: Vorsicht bei INIRead()!

Beitrag 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"

Benutzeravatar
klammerauf
Member
Beiträge: 116
Registriert: 28. November 2010, 15:11
Wohnort: bei Karlsruhe
Kontaktdaten:

Re: Vorsicht bei INIRead()!

Beitrag 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
--
WinDev 23, WM Apps für Android und iOS, Anwendungen für Windows CE Mobile Barcode Scanner, Python 3 mit Oracle

Lewi
Member
Beiträge: 74
Registriert: 3. September 2010, 14:45
Wohnort: Hamburg
Kontaktdaten:

Re: Vorsicht bei INIRead()!

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

Antworten