![]() |
SHGetKnownFolderPath liefert keinen Pfad
Hallo an alle!
Ich habe vor kurzem Delphi 2010 auf Windows 7 neu installiert und habe nun das Problem, dass die alte Funktion
Delphi-Quellcode:
leider eine Debugger-Exception liefert (Code: 3 "Das System kann den angegebenen Pfad nicht finden"). Also habe ich gegoogelt und lesen müssen, dass ich eine "deprecated" Funktion nutze. Soweit so gut. Jetzt wäre also
SHGetSpecialFolderLocation
Delphi-Quellcode:
die beste Wahl. Leider liefert sowohl die Version aus ShlObj als auch die aus einer Unit, die ich einem Forum gefunden habe, als Ergebnis "#0".
SHGetKnownFolderPath
Die erste Variante liefert wenigstens zur Laufzeit ein Ergebnis, aber das kann es ja nicht sein. Habt ihr bereits eine funktionierende Lösung in der Konstellation gefunden? Viele Grüße Sybok |
AW: SHGetKnownFolderPath liefert keinen Pfad
|
AW: SHGetKnownFolderPath liefert keinen Pfad
Naja, was ist, wenn es den Pfad wirklich nicht gibt?
Soweit ich weiß, wird die alte Funktion noch unterstützt, aber die neue wäre natürlich besser: Zitat:
K-H |
AW: SHGetKnownFolderPath liefert keinen Pfad
Erstmal danke für die Antworten. Den Pfad gibt es, ich suche unter anderem nach dem Dokumentenordner und dem ApplicationData Pfad. Beide sind vorhanden, in beiden finde ich auch meine Dateien nach dem Start zur Laufzeit. Der Fehler ist ja "nur" eine Debugging Exception. Wenn ich die Daten im Objektinspektor verfolge, ergibt sich folgendes:
Delphi-Quellcode:
= Liefert "chinesische" Schriftzeichen, in meiner Komponente und zur Laufzeit wird aber der richtige Ordner angegeben. (Unicode Probleme?)
SHGetSpecialFolderLoaction
Delphi-Quellcode:
= liefert #0, bei
SHGetKnownFolderPath
Delphi-Quellcode:
genauso wie bei
FOLDERID_Documents
Delphi-Quellcode:
.
FOLDERID_AppData
Das ist die von mir angesprochene Unit: ![]() Außerdem gibt es
Delphi-Quellcode:
auch noch in ShlObj, der Aufruf liefert leider das selbe Ergebnis.
SHGetKnownFolderPath
Es muss doch möglich sein, dass man unter Windows 7 die Standard Systemordner herausfinden kann? Viele Grüße Sybok |
AW: SHGetKnownFolderPath liefert keinen Pfad
Zitat:
Nein im Ernst, wenn Du nach CSIDL_PROGRAM_FILES fragst, bekommst Du ja nur das zurück, was "irgendwo" definiert wurde. So bekomme ich auf meinem Arbeitsplatzrechner auf die Frage nach CSIDL_MYDOCUMENTS nur die Antwort falscher Parameter und bei CSIDL_COMMON_OEM_LINKS Pfad existiert nicht. Und was die "Chinesischen" Schriftzeichen angeht, da liegst Du wahrscheinlich mit Deiner Vermutung richtig, obwohl unter Umständen ein Symbol-Font daran schuld sein könnte, ist aber wohl eher unwahrscheinlich. Gruß K-H |
AW: SHGetKnownFolderPath liefert keinen Pfad
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe das grade mal bei mir unter Windows 7 ausprobiert. Hier bekomme ich auch entsprechend die Pfade angezeigt. Allerdings verwende ich hier noch Delphi 2007. Könnte also durchaus sein das in meiner Unit noch etwas für Delphi 2010 angepasst werden muss.
Was ein möglicher Fehler bei dir sein könnte, ist das die FOLDERID_AppData laut MSDN nicht deklariert ist. Jedoch erklärt das noch nicht das die FOLDERID_Documents bei dir nicht angezeigt wird. Anbei mal ein Testprojekt als ausführbare Datei welches zumindest bei mir die Pfade für
Delphi-Quellcode:
anzeigt.
FOLDERID_Documents
FOLDERID_LocalAppData FOLDERID_LocalAppDataLow FOLDERID_RoamingAppData |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz