![]() |
Kann auf C:\ schreiben aber nicht auf APPDATA.
N'abend...
Da man unter Vista ja die Ini's & Co. unter Appdata speichern soll wollte ich eine Anwendung von mir mal Vistaready machen. Unter XP getestet: Wenn ich in die INI unter APPDATA+\firmenname\progname\ speichern will bekomm ich ne schöne Exception das dies nicht möglich seie. Dafür kann ich die INI aber ohne Probleme unter C:\ ablegen. :mrgreen: Und das schlimmste ist ich hab Adminrechte mfg |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
|
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
Ich mein dieses Appdata...
Start-Ausführen-CMD-SET und dann APPDATA also kurz: Die Environmentvaribale APPDATA. mfg |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
ein ganz dezentes *push*
:angel: |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
Nimm nicht die Environmentvariable, sondern besorge Dir den Pfad richtig über die API. Catbytes hat dazu ja schon etwas verlinkt.
Ich hatte das woanders schonmal gepostet, hier einfach nochmal ein grober Codeschnipsel:
Delphi-Quellcode:
function SpecialDirectory(const iID: Integer): string;
// Needs: ShlObj on Delphi, WinExt on FPC var aPath : array[0..MAX_PATH] of Char; pilTemp: PItemIDList; begin try if SHGetSpecialFolderLocation(0, iID, pilTemp)=S_OK then begin if SHGetPathFromIDList(pilTemp, aPath) then begin Result := string(aPath); end else Result := ''; CoTaskMemFree(pilTemp); end else Result := ''; except Result := ''; end; end; var sPath: string; begin sPath := SpecialDirectory(CSIDL_APPPDATA); end; |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
Bei deiner Funktion wird auch noch die ActiveX benötigt und er kennt CSIDL_APPPDATA nicht.
Aber der Pfad: C:\Dokumente und Einstellungen\Tobias Hocke\Anwendungsdaten ist doch der korrekte Pfad (dieser Steht auch so in den Environments) Mfg Tobi |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
Du könntest dir den Pfad auch aus der Registry holen. Es gibt aber zwei Gefahren:
1. dass die variablen irgendwann einfach nicht mehr existieren 2. dass Windows das ganze umleitet, und du damit nicht nur eine Fehlermeldung bekommst, sondern sehr inkonsistentes Verhalten deiner Anwendung. Also machs so. Und die KOnstante kannst du dir so holen: ![]() |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
APPDATA aus Registry : C:\Dokumente und Einstellungen\Tobias Hocke\Anwendungsdaten
APPDATA aus Environments : C:\Dokumente und Einstellungen\Tobias Hocke\Anwendungsdaten Und dann noch diesen Pfad dazu : \Tobias Hocke Software\produktname\ Daraus folgt dieser Pfad in den ich nicht schreiben kann: C:\Dokumente und Einstellungen\Tobias Hocke\Anwendungsdaten\Tobias Hocke Software\produktname\ :-( Ich werde nun noch die Environment aus der API auslesen und vergleichen... //EDIT: Und dieser Pfad ist auch gleich |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
Hmmm... wie wärs dann mal mit dem genauen Text der "schönen Exception"?
Außerdem: gibts den Ordner schon? Sonst ForceDirectories. |
Re: Kann auf C:\ schreiben aber nicht auf APPDATA.
:wall: Man sollte nie versuchen in ein Verzeichnis zu schreiben welches noch nicht da ist. Die 2 Unterordner haben gefehlt.
Das kommt davon wenn man nach 23 Uhr etwas anfängt :drunken: Mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz