Zugriff auf LocalApplicationData Äquivalent in Delphi
Mit Delphi, wie kann ich auf die entspricht .NET-System.Umwelt.SpecialFolder.LocalApplicationData variable (die funktioniert auf jeder beliebigen version von Windows)? Ich nahm an, ich könnte nur:
dir := GetEnvironmentVariable('LOCALAPPDATA');
Dies funktioniert auf Vista, aber XP scheint nicht zu setzen, dass Umwelt-Variablen, die standardmäßig zumindest auf meinem test-Maschine.
- Ich denke, die LOCALAPPDATA environment-variable wurde Hinzugefügt, die in Windows Vista vistaonwindows.com/environment_variables.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Delphi, das Besondere system-Ordner-Pfad-Konstanten sind definiert in der ShlObj.DCU, und auf die verwiesen werden in form von CSIDL_, gefolgt von einem symbolischen Namen.
Beispiel:
Pfad zum aktuellen desktop -
Daten Verzeichnis
Hier ist eine kurze Funktion, die zurückkehren wird der entsprechende spezielle Ordner-Pfad, wenn Sie die symbolischen Namen. Stellen Sie sicher, dass Sie die SHLOBJ.DCU unit in Ihrer USES-Anweisung, und verwenden Sie die folgenden:
================================================================
Referenz, die Konstanten sind wie folgt:
Sehen dieser Artikel.
Edit:
Als aufgenommen in den Kommentar von stukelly es gibt viel mehr Informationen zur Verfügung, die SHGetFolderPath () - Funktionalität. Die Delphi-VCL wirklich haben sollte-Funktionalität für die erste standard-Pfade, und wenn Embarcadero ist in der Tat ein weiteres Delphi-ähnliches tool auf einem anderen OS wird dies umso wichtiger. Für eine multi-Plattform-Umsetzung von system-standard-Pfade siehe auch die Dokumentation von wxStandardPaths in wxWidgets. Auf MSW dieser verwendet die verschiedenen CSIDL_XXX Konstanten.
Vorausgesetzt, Sie können machen WinAPI Anrufe von Delphi (das ISTR Sie können), Sie verwendet werden, um in der Lage zu tun, die mit einem API-Aufruf (so etwas wie GetSystemFolder oder GetUserDataFolder). Es ist schon eine Weile her, seit ich habe zu tun, aber ich denke, Sie können jetzt tun Sie es mit SHGetFolderPath, indem in CSIDL_LOCAL_APPDATA.