Autor Beitrag
lambruco
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100

Win 2000/2000 Server/XP
D6 Prof.
BeitragVerfasst: Fr 18.07.03 09:18 
Moin Forum,

wenn man keinen Pfad angibt, wird eine INI standardmäßig im Ordner /WINDOWS gespeichert. Wie kann ich diesen Pfad ermitteln?

Das Problem ist folgendes, ich möchte die INI per Button und ShellExecute im Editor öffnen, dafür benötige ich den vollständigen Pfad der INI. Dieser wechselt aber immer, je nach User. bei mir wird die INI z.B. unter

c:\Dokumente und Einstellungen\username\Windows\

gespeichert (Win2000), wenn also der User wechselt, bzw. das OS, dann ändert sich auch der Pfad. Jetzt könnte man natürlich für die INI einen festen Pfad angeben, aber das ist leider nicht erwünscht.

Gibt es vielleicht eine andere Lösung? Wie könnte ich zB. den aktuellen User ermitteln? Bin für Vorschläge dankbar .

Lars

_________________
Wer Rechtschreibfehler findet, kann Sie behalten
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 18.07.03 10:47 
Suchfunktion. :wink: Profilpfad bei W2K des Users auslesen, aber wie?. Der Beitrag enthält auch weiterführende Links, so dass du auf jeden Fall eine vernünftige Lösung (für möglichst alle Windows-Versionen) finden solltest.

Entgegen der Aussage in der Borland-Hilfedatei (zumindest steht´s bei meinem D5 noch drin!) sollten INI-Dateien aber tunlichst nicht im Windows- oder Systemordner gespeichert werden. Dass das mangels Rechte manchmal auch gar nicht klappt, ist die andere Sache.
Wobei mir das hier
Zitat:
bei mir wird die INI zB: unter c:\Dokumente und Einstellungen\username\Windows\ gespeichert (Win2000)

aber doch merkwürdig vorkommt. Normalerweise müsste deine INI-Datei (wenn du keinen Pfad angibst) direkt im Windows-Ordner landen, nicht aber im Profilpfad. :?: Sehr komisch.

Falls du die INI-Datei vielleicht im Ordner deines Programms speichern willst, dann wäre eine Variante diese hier:
ausblenden Delphi-Quelltext
1:
ini := TIniFile.Create(ExtractFilePath(paramstr(0)) + 'ininame.ini');					

vor, mit der die Datei "ininame.ini" im Ordner deines Programms landet. Eine weitere Möglichkeit:
ausblenden Delphi-Quelltext
1:
ini := TIniFile.Create(ChangeFileExt(paramstr(0),'.ini'));					

Damit trägt die INI-Datei den selben Namen wie deine EXE, also bei "projekt1.exe" heißt sie dann "projekt1.ini" (durch ChangeFileExt). Auf die gleiche Weise kannst du den Namen dann natürlich ermitteln und an ShellExecute weiterreichen.

Aber, ehrlich gesagt!, finde ich die Idee mit dem Benutzerverzeichnis besser. :) Damit ist deine Anwendung Multi-User-fähig, weil jeder User seine eigene INI und damit seine eigenen Einstellungen hat.
lambruco Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100

Win 2000/2000 Server/XP
D6 Prof.
BeitragVerfasst: Fr 18.07.03 11:10 
Erstmal vielen Dank für die guten Lösungsmöglichkeiten. Weshalb die INI unter

c:\Dokumente undEinstellungen\Username\windows\

landet liegt vielleicht daran, dass das Basisverzeichnis von Win2000 nicht \WINDOWS sondern \WINNT lautet, oder aber vielleicht daran das ich Win2000 Server benutze.

Naja, villeicht forsche ich ja nochmal ein wenig rum.

Lars

_________________
Wer Rechtschreibfehler findet, kann Sie behalten