Autor Beitrag
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: So 25.12.05 00:35 
Hallo,

teste den Code mal:
ausblenden 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
    // handle errors...
  end;
  SetLength(sShortName, nShortNameLen);
  Result := sShortName;
end;

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: So 25.12.05 12:56 
vlt hilft es wenn du Adressen, die leerzeichen enthaltern in " setzt.

ausblenden Delphi-Quelltext
1:
getdenname('"D:\Delphi Programme\"');					


mfg
galagher Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: So 25.12.05 18:44 
user profile iconFabian 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! :mrgreen: (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



BeitragVerfasst: Mo 26.12.05 11:55 
user profile icongalagher 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mo 26.12.05 14:35 
user profile iconLuckie 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. :D

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
damadmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 60



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 04.03.06 11:45 
user profile icondamadmax 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 60



BeitragVerfasst: So 05.03.06 19:03 
danke :)

_________________
Alle Rechtschreibfehler sind gewollt und sollen meine Individualität verstärkt zum Ausdruck bringen.