![]() |
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; |
AW: Echter Dateiname zu 8.3-Format
Dafür gibt es eigene Funktionen, schau mal hier:
![]() |
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
![]() ![]() |
AW: Echter Dateiname zu 8.3-Format
|
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 ![]() @DeddyH: Habe den Titel mal angepasst, damit es klarer wird. |
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.
|
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. |
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 ... |
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. |
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. |
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