![]() |
Lokalisierte Benutzerverzeichniss
Hallo zusammen,
ich habe gerade die undankbare Aufgabe einige Fehler in der Anwendung eines Kunden beheben zu müssen. Ein Problem ist die Tatsache, dass Dateien standardmäßig in einem Ordner auf dem Desktop gespeichert werden (Ich weiß, Todsünde. Sind aber noch mehr Todsünden in dem Programm :shock:). Das Problem ist jetzt, dass der Datei-Öffnen Dialog die lokalisierten Verzeichnis Namen verwendet, in den Einstellungen aber die nicht-lokalisierten stehen. Sowohl ShGetKnownFolderPath als auch SHGetSpecialFolderPath liefern nämlich den nicht-lokalisierten. Hat jemand eine Idee wie ich das umschiffen kann? Danke und Viele Grüße Stefan Menten |
AW: Lokalisierte Benutzerverzeichniss
Dein genaues Problem mit diesem Umstand/Verhalten habe ich zwar nicht ganz begriffen...
Kann es sein, dass Du so etwas in dieser Art suchst?
Delphi-Quellcode:
uses
Windows, ShlObj, ShellAPI, SysUtils; function GetLocalizedFolderPath(const NonLocalizedPath: string): string; var SHFileInfo: TSHFileInfo; begin Result := NonLocalizedPath; if SHGetFileInfo(PChar(NonLocalizedPath), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_DISPLAYNAME) <> 0 then Result := SHFileInfo.szDisplayName; end; |
AW: Lokalisierte Benutzerverzeichniss
Moin,
und danke für die Hilfe. das Problem ist, dass der OpenDialog mit dem lokalisierten Namen arbeitet, in den Einstellungen aber der physikalische Pfad steht. Wenn der Benutzer dann eine Datei öffnen will, landet er im Dokumenten-Ordner weil der OpenDialog den Pfad nicht findet. Deine Funktion habe ich ausprobiert. Das funktionert, übersetzt aber nur den letzten Ordnernamen. Ich habe es jetzt mal mit SHGetLocalizedName versucht. Das funktionirt aber nicht so wie ich es implementiert habe.
Delphi-Quellcode:
Mache ich da was falsch?
function GetLocalName(Path: string): string;
var wpNew: PWideChar; cch: UINT; pidsRes: integer; hr: HRESULT; begin wpNew := StrAlloc(MAX_PATH); try FillChar(wpNew^, MAX_PATH, 0); cch := MAX_PATH; hr := SHGetLocalizedName(PWideChar(Path), wpNew, cch, pidsRes); if hr = 0 then result := wpNew else result := 'error'; finally StrDispose(wpNew); end; end; Danke und Gruß Stefan Menten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 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