Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi GetShortPathName geht auf einem System nicht (https://www.delphipraxis.net/174857-getshortpathname-geht-auf-einem-system-nicht.html)

ralfiii 14. Mai 2013 16:22

GetShortPathName geht auf einem System nicht
 
Hallo!

Um eine mit Leerzeichen getrennte Dateiliste übergeben zu können verwende ich "old style" 8.3 Dateinamen - da sind ja ganz sicher keine Leerzeichen drin.

Seltsamerweise hab ich jetzt einen Kunden bei dem GetShortPathName nicht richtig funktioniert.

Will ich den Namen einer Datei die auf "C:\Program Files\foo" (dargestellt als "C:\Programme\foo") haben, dann krieg ich immer den nicht verkürzten Dateinamen. Bei anderen Pfaden funktionier's seltsamerweise.
Es scheint da ein Registry-Setting "NtfsDisable8dot3NameCreation" zu geben das da Einfluss haben könnte, aber auf das hab ich ja im Feld keinen Einfluss. Ich brauch eine Lösung die immer geht.

Hiiiilfe!
(Btw: Es ist ein Win7 Prof, SP1, 32bit, deutsch)

Der schöne Günther 14. Mai 2013 16:39

AW: GetShortPathName geht auf einem System nicht
 
Ich weiß dass dir das nicht wirklich weiter hilft, aber ich würde mir die alten 8.3-Namen wirklich noch einmal überlegen. Sicher, dass das überhaupt noch klappt, wenn Nicht-Unicode-Zeichen im Pfad sind? Was ist mit Netzwerkfreigaben? Ist für die auch garantiert, dass man das immer in einen 8.3-Namen umdrehen kann?

Ansonsten wie "kriege den nicht verkürzten Namen"? Gibt die Fkt. False zurück? Wenn ja, was liefert GetLastError() ?

p80286 14. Mai 2013 17:34

AW: GetShortPathName geht auf einem System nicht
 
Weiterhin gibt es so verkrüppelte Dateinamen wie 'AlleDate~.si~.fu~' obwohl eine 8.3 Darstellung möglich wäre.

Laß die Finger davon, das gibt nur Kopfschmerzen und Magengeschwüre.

Gruß
K-H

Christian Seehase 14. Mai 2013 17:44

AW: GetShortPathName geht auf einem System nicht
 
Moin ralfiii,

Zitat:

Zitat von ralfiii (Beitrag 1215327)
Ich brauch eine Lösung die immer geht.

Um mal p80286 Aussage etwas umzuformulieren:
Nimm keine kurzen sondern die langen Dateinamen und verwende ein Trennzeichen, das nicht in einem Dateinamen vorkommen kann.

jaenicke 14. Mai 2013 18:52

AW: GetShortPathName geht auf einem System nicht
 
Zitat:

Zitat von ralfiii (Beitrag 1215327)
Es scheint da ein Registry-Setting "NtfsDisable8dot3NameCreation" zu geben das da Einfluss haben könnte, aber auf das hab ich ja im Feld keinen Einfluss. Ich brauch eine Lösung die immer geht.

Da man kurze Dateinamen abschalten kann (die Einstellung hast du ja schon gefunden), kann es keine Lösung geben, die immer einen kurzen Dateinamen liefert. Was nicht existiert, kann man auch nicht auslesen.

Zitat:

Zitat von ralfiii (Beitrag 1215327)
Um eine mit Leerzeichen getrennte Dateiliste übergeben zu können verwende ich "old style" 8.3 Dateinamen - da sind ja ganz sicher keine Leerzeichen drin.

Wie wäre es mit Anführungszeichen drumherum wie es bei Parametern üblich ist?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:24 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