Autor |
Beitrag |
galagher
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 24.12.05 18:51
Hallo!
Ich habe folgenden Pfadnamen, den ich "verkürzen" will, was aber nicht funktioniert - er wird unverändert zurückgegeben. Der Ordner existiert aber:
Delphi-Quelltext 1: 2: 3: 4: 5:
| var FileName: string; begin FileName:='D:\Delphi-Programme'; Caption := ExtractShortPathName(FileName); |
Kann es sein, dass ExtractShortPathName nicht korrekt auf NTFS-Partitionen funktioniert? Wenn ich einen gleichnamigen Ordner auf einer FAT32-Partition anlege, klappt ExtractShortPathName korrekt.
Als ich mit COMMAND.COM einen Test machte, stellte ich fest, das er mit DIR zwar aufgelistet wird, ich aber nicht mit CD in den Ordner wechseln kann - "Ungültiges Verzeichnis". Mit CMD hingegen klappt es.
Meine Fragen nun: Liegt es an NTFS, und gibt es eine alternative Möglichkeit, den kurzen Datei- oder Ordnernamen zu ermitteln?
Danke schon mal!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 25.12.05 00:35
Hallo,
teste den Code mal:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function GetShortName(sLongName: string): string; var sShortName: string; nShortNameLen: Integer; begin SetLength(sShortName, MAX_PATH); nShortNameLen := GetShortPathName(PChar(sLongName), PChar(sShortName), MAX_PATH - 1); if (0 = nShortNameLen) then begin end; SetLength(sShortName, nShortNameLen); Result := sShortName; end; |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: So 25.12.05 12:15
Funktioniert auch nicht, es wird immer der volle, lange Dateinamen zurückgegeben. Bei einigen Ordnern, zB. bei C:\Dokumente und Einstellungen wird C:\DOKUME~1 zurückgegeben.
Bei manchen, bereits bestehenden Ordnern klappt es, bei neu angelegten nicht. Mit den Rechten hat es offenbar nichts zu tun. Es scheint, als gäbe es gar keinen kurzen Dateinamen mehr! Wie gesagt, auch DOS findet den Ordner bzw. die Datei nicht. Sobald jedoch keine Leerzeichen im namen vorkommen, klappt wieder alles.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: So 25.12.05 12:56
vlt hilft es wenn du Adressen, die leerzeichen enthaltern in " setzt.
Delphi-Quelltext 1:
| getdenname('"D:\Delphi Programme\"'); |
mfg
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: So 25.12.05 18:44
Fabian W. hat folgendes geschrieben: | vlt hilft es wenn du Adressen, die leerzeichen enthaltern in " setzt. |
Geht leider auch nicht, da wird ein leerer String zurückgegeben, da der Pfad offenbar wörtlich, d.h., mit Anführungszeichen als Bestandteil des Namens, verarbeitet wird. Ist zwar lästig, aber ich werde mein Programm wohl völlig neu schreiben müssen!
Ok, ist wohl bei NTFS so, interessanterweise aber nur bei neu angelegten Ordnern und Dateien; solche, die beim Windows-Setup erstellt wurden, wie eben zB. "Dokumente und Einstellungen", werden korrekt gekürzt. Zum Einen muss ja irgendwann Schluss sein mit den Anachronismen aus der DOS-Zeit, zum Anderen hat Billy da nur halbe Sachen gemacht, denn sein immer noch vorhandenes MS-DOS kann nur mit kurzen Dateinamen, und wenn es die nicht gibt, gibt's eben keinen Zugriff auf die Datei oder den Ordner. Das ist besonders gut, wenn man mal von CD booten muss!  (Fragt jetzt nicht, wie oft man das schon macht!) Es geht um's Prinzip.
Ich meine, wenn ich oder wer auch immer hier im Forum ein Programm schreibt, und dazu eine Zusatzsoftware, dann wird der doch darauf schauen, das die beiden auch kompatibel sind, im Falle von DOS eben FAT32- oder NTFS-fähig. Du kannst zwar Startdisketten erstellen, nur die nützen dir nichts bei NTFS, denn 1. findet DOS die NTFS-Partition nicht, und, wenn du dann ein Programm einsetzt, das NTFS zumindest lesen kann, findet DOS 2. etliche Dateien nicht. Ist besonders hilfreich, wenn man mit einem Virenscanner drübergeht - die Datei/der Ordner existiert dann einfach nicht!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 26.12.05 11:55
galagher hat folgendes geschrieben: |
Ok, ist wohl bei NTFS so, interessanterweise aber nur bei neu angelegten Ordnern und Dateien; solche, die beim Windows-Setup erstellt wurden, wie eben zB. "Dokumente und Einstellungen", werden korrekt gekürzt. |
Dann wirst du irgendwann mal die Unterstützung für kurze Dateinamen deaktiviert haben.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 26.12.05 14:35
Luckie hat folgendes geschrieben: |
Dann wirst du irgendwann mal die Unterstützung für kurze Dateinamen deaktiviert haben. |
Stimmt, Wert war auf 1 statt auf 0. Aber ich war's nicht, denn ich musste mir erst mal den Weg dorthin "ergooglen". Wurde vielleicht beim Installieren eines Programmes geändert? Aber egal, jetzt funktioniert es wieder. 
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
damadmax
      
Beiträge: 60
|
Verfasst: Sa 04.03.06 10:54
wär hilfreich zu erfahren wo man das wieder einschaltet...
werd jetzt erstmal googlen gehn
_________________ Alle Rechtschreibfehler sind gewollt und sollen meine Individualität verstärkt zum Ausdruck bringen.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 04.03.06 11:45
damadmax hat folgendes geschrieben: | wär hilfreich zu erfahren wo man das wieder einschaltet... |
HKEY_LOCAL_MACHINESYSTEMCurrent ControlSetControlFileSystem
1 = keine kurzen Dateinamen
0 = kurze Dateinamen
Gefunden in:
www.pcgames.de/?menu...tid=4190172&x=24
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
damadmax
      
Beiträge: 60
|
Verfasst: So 05.03.06 19:03
danke 
_________________ Alle Rechtschreibfehler sind gewollt und sollen meine Individualität verstärkt zum Ausdruck bringen.
|
|
|