Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vollen Dateinamen aus 8.3-Format ermitteln (https://www.delphipraxis.net/190802-vollen-dateinamen-aus-8-3-format-ermitteln.html)

Jasocul 9. Nov 2016 11:47


Vollen Dateinamen aus 8.3-Format ermitteln
 
Hallo,

ich habe folgende Situation:
Meine Anwendung ist in das Kontext-Menü des Windows-Explorers (Windows 7) eingebunden.
Es bekommt über den ersten Parameter einen Dateinamen geliefert.

In der Anwendung landet dann der Dateiname im verkürzten 8.3-Format. Auch die enthaltenen Pfade sind derart verkürzt.
Aus HalloWindows7.txt wird HALLOW~1.TXT.

Für die weitere Verarbeitung benötige ich aber die korrekten Pfad- und Datei-Angaben.

Mal abgesehen davon, dass ich nicht verstehe, warum ich den Namen so vom Betriebssystem geliefert bekomme, suche ich eine Funktion, die mir die richtigen Angaben liefert.

Ein wenig Source:
Delphi-Quellcode:
var
  Filename : String;
begin
...
  Filename := ParamStr(1);
  ShowMessage(Filename); // Zeigt nur verkürztes 8.3-Format
...
end;

bra 9. Nov 2016 12:07

AW: Echter Dateiname zu 8.3-Format
 
Dafür gibt es eigene Funktionen, schau mal hier: http://www.delphipraxis.net/1330893-post5.html

DeddyH 9. Nov 2016 12:08

AW: Echter Dateiname zu 8.3-Format
 
Entweder verstehe ich Dich nicht, oder der Threadtitel und die Problembeschreibung sind exakt gegenteilig :-) Wie dem auch sei, ich denke, mit MSDN-Library durchsuchenGetShortPathName bzw. MSDN-Library durchsuchenGetLongPathName sollte das Problem zu beheben sein.

himitsu 9. Nov 2016 12:09

AW: Echter Dateiname zu 8.3-Format
 
MSDN-Library durchsuchenGetShortPathName
MSDN-Library durchsuchenGetFullPathName

Aber auch die kurzen Namen sind "richtige" Dateinamen.

[add] pühh

Jasocul 9. Nov 2016 12:14

AW: Echter Dateiname zu 8.3-Format
 
Danke. Ich hatte einfach nicht den richtigen Suchbegriff für Tante Google.
Natürlich sind beides "richtige" Dateinamen, Himitsu.

Habe jetzt diese Lösung genommen.

@DeddyH:
Habe den Titel mal angepasst, damit es klarer wird.

himitsu 9. Nov 2016 13:15

AW: Echter Dateiname zu 8.3-Format
 
Wie ist dein Programm an den Explorer angebunden? Sobald veraltete APIs oder ANSI-APIs ins Spiel kommen, verfällt Windows machmal gern auf Kompatibilitätsmodi zurück.

Jasocul 9. Nov 2016 13:33

AW: Vollen Dateinamen aus 8.3-Format ermitteln
 
Unter HKEY_CLASSES_ROOT\*\Shell\MeinProgramm\Command habe ich eine Zeichenfolge für mein Programm gemacht.
Innerhalb meines Programms hole ich mir dann nur noch den Eintrag aus dem ersten übergebenen Parameter.

Es gibt keine weiteren API-Aufrufe oder ähnliches.

himitsu 9. Nov 2016 13:38

AW: Vollen Dateinamen aus 8.3-Format ermitteln
 
Gibt ja tausende Möglichkeiten.

Verschiedene Arten der Pfade und Parameter:
abc %1
x:\abc.exe %1
x:\abc.exe "%1"
x:\abc.exe %*
"x:\abc.exe" "%1"
"x:\abc.exe" %*

DDE
OLE
...

Jasocul 9. Nov 2016 13:42

AW: Vollen Dateinamen aus 8.3-Format ermitteln
 
Bei mir steht x:\abc.exe %1

Ich nehme es dann, wie es vom OS geliefert wird.

[EDIT]
Ich habe jetzt deine grüne Variante eingetragen.
Jetzt bekomme ich es, wie von mir gewünscht.

Danke.

himitsu 9. Nov 2016 14:45

AW: Vollen Dateinamen aus 8.3-Format ermitteln
 
Windows macht hier kein " um den Parameter drum, wenn es nötig wäre,
stattdessen gibt es halt den kurzen Pfad, wo keine Leerzeichen drin vorkommen können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 1 von 2  1 2      

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