Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Ermittlung physikalischer Dateipfad aus "Localized Name" (https://www.delphipraxis.net/164488-ermittlung-physikalischer-dateipfad-aus-localized-name.html)

UliBru 15. Nov 2011 13:27

Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Hallo zusammen,

wie meistens suche ich eine Nadel im Heuhaufen. Vielleicht hilft meine direkte Anfrage schneller.

Ich verwende VCL-Komponenten von Almediadev (Skins). Hierbei nun eine Komponente bzgl. Select Directory.
Die zeigt mir nun heute übliche Namen an wie Desktop, Bibliotheken, Bilder, Dokumente, Heimnetzgruppe etc. Auf PCs in USA würde dann daraus etwas wie Libraries, Pictures, Documents. Möglicherweise mit älteren OS-Versionen ergeben sich dann Namen wie Eigene Dokumente oder MyDocuments usw. usw.

Nun wählt der Programmnutzer also irgend ein "Verzeichnis". Es muss festgestellt werden, ob es überhaupt ein Verzeichnis ist, z.B. Heimnetzgruppe wäre wohl keines. Dann muss aus dem lokalen Namen wohl der intern verwendete englische Name bestimmt werden. Damit damit widerum die zugehörige CSIDL gefunden wird. Mit der dann der reale Pfad ermittelt wird.
So stell ich mir das zumindest vor.

JclFileUtils.PathGetPhysicalPath als Beispiel liefert mir mit JclFileUtils.PathGetPhysicalPath('Bilder') als Ergebnis 'Bilder' zurück, also unbrauchbar.

Wie/womit erhalte ich aus einem mit Select Direktory zurückgegebenen String nun den realen physikalischen Pfadnamen, den ich dann mit beliebigen Dateiperationen verwenden kann? Gibt es da was Fertiges? Muss jeder sich selbst durchwursteln?

Danke für jede Hilfe im voraus.

himitsu 15. Nov 2011 13:37

AW: Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Diese Pfadauswahldialoge sollten die lokalisieren Pfadnamen eigentlich nur anzeigen, aber im Programm sollte dieses den richtigen Pfadnamen zurückgeben.


Zitat:

JclFileUtils.PathGetPhysicalPath('Bilder') als Ergebnis 'Bilder'
Ich vermute mal, daß der angegebene Parameter "Bilder" schon falsch ist und da dieses dann nicht übersetzt werden kann, liefert diese Funktion wohl einfach nur den unveränderten String zurück.

UliBru 15. Nov 2011 15:26

AW: Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Zitat:

Zitat von himitsu (Beitrag 1136301)
Diese Pfadauswahldialoge sollten die lokalisieren Pfadnamen eigentlich nur anzeigen, aber im Programm sollte dieses den richtigen Pfadnamen zurückgeben.

Ja, sollte ...
Tut es leider nicht. Und nun müsste ich dann ja erst einmal zu den intern verwendeten Namen kommen um dann vielleicht mit JCL weiterzukommen. Gibt es da etwas? Und wenn ich dann daran denke, dass in Polen ein entsprechend anderer localized Name zurückgegeben wird ...:(

bernerbaer 15. Nov 2011 15:34

AW: Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Wie schon himitsu gesagt hat, eigentlich sollten Pfadauswahldialoge die korrekten Pfade zurückgeben. Wenn dem nicht so ist, gibt es vielleicht verschiedene Properties in der Komponenente, die den Pfad unterschiedlich zurückgeben zb localizedPath, RealPath, UNCPath, PathForParsing, ...?

Zu empfehlen ist zudem sich an den Hersteller der Komponente zu wenden, der kann dir garantiert weiterhelfen: http://www.almdev.com/

p80286 16. Nov 2011 05:05

AW: Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Einfach nur "Bilder" als Pfad ist mir eigentlich zu wenig. Es sollte wohl "C:\Bilder" sein oder nicht?

Gruß
K-H

UliBru 16. Nov 2011 08:31

AW: Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Ich hab an Almediadev geschrieben, bisher keine Antwort. Die Komponente liefert tatsächlich nur Pfade wie 'Bilder', 'Dokumente etc. C:\Bilder wäre auch falsch.
Habe beim Windows Explorer festgestellt, dass bei dargestelltem Verzeichnis 'Eigene Bilder' ein Klick in die Adressleiste oben dann den Pfad C:\Users\User\Pictures dargestellt. Wenn man die Bilder aber auch in die Bibliothek aufgenommen hat, liefert der Klick nur Bibliotheken\Bilder. Man muss dann noch ein Verzeichnis tiefer, um dann wiederum das richtige Ergebnis zu erhalten. Ist insofern klar, weil unter dem logischen Verzeichnis Bibliotheken\Bilder wiederum mehrere physikalische Verzeichnisse liegen können. Es gibt einfach keinen Dateipfad für Bibliotheken\Bilder.

Tja, nun soll der Benutzer aber eben ein Verzeichnis wählen können und das Programm soll damit arbeiten. Die Komponente verwendet intern einen ShellTree, aber da hört es mit meinen Kenntnissen auf. Es sollte nur ein Baum aus realen Verzeichnissen dargestellt werden. Wie das geht, weiss ich nicht und Almediadev hat noch nicht geantwortet.

p80286 16. Nov 2011 11:18

AW: Ermittlung physikalischer Dateipfad aus "Localized Name"
 
Wie wäre es denn mit einer anderen Komponente, die Verzeichnisinformationen zu erhalten? Z.B. mit SHBrowseforFolder?

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz