AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Vollen Dateinamen aus 8.3-Format ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Vollen Dateinamen aus 8.3-Format ermitteln

Ein Thema von Jasocul · begonnen am 9. Nov 2016 · letzter Beitrag vom 10. Nov 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#1

Vollen Dateinamen aus 8.3-Format ermitteln

  Alt 9. Nov 2016, 12:47
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;
Peter

Geändert von Jasocul ( 9. Nov 2016 um 13:16 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Echter Dateiname zu 8.3-Format

  Alt 9. Nov 2016, 13:07
Dafür gibt es eigene Funktionen, schau mal hier: http://www.delphipraxis.net/1330893-post5.html
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: Echter Dateiname zu 8.3-Format

  Alt 9. Nov 2016, 13:08
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Echter Dateiname zu 8.3-Format

  Alt 9. Nov 2016, 13:09
MSDN-Library durchsuchenGetShortPathName
MSDN-Library durchsuchenGetFullPathName

Aber auch die kurzen Namen sind "richtige" Dateinamen.

[add] pühh
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Echter Dateiname zu 8.3-Format

  Alt 9. Nov 2016, 13:14
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.
Peter

Geändert von Jasocul ( 9. Nov 2016 um 13:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: Echter Dateiname zu 8.3-Format

  Alt 9. Nov 2016, 14:15
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Vollen Dateinamen aus 8.3-Format ermitteln

  Alt 9. Nov 2016, 14:33
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.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: Vollen Dateinamen aus 8.3-Format ermitteln

  Alt 9. Nov 2016, 14:38
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
...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Vollen Dateinamen aus 8.3-Format ermitteln

  Alt 9. Nov 2016, 14:42
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.
Peter

Geändert von Jasocul ( 9. Nov 2016 um 14:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

AW: Vollen Dateinamen aus 8.3-Format ermitteln

  Alt 9. Nov 2016, 15:45
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 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