AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dateien mit langen Pfaden bzw. Dateinamen kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien mit langen Pfaden bzw. Dateinamen kopieren

Ein Thema von et2004 · begonnen am 23. Sep 2005 · letzter Beitrag vom 25. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
et2004
(Gast)

n/a Beiträge
 
#1

Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 13:40
Hallo Zusammen!

Ich habe folgende Aufgabe: aus einem Delphi Programm müssen Dateien von einem PC auf eine externe USB-Festplatte kopiert werden. Dabei muss die Ordner-Struktur auf der USB-Festplatte 1-zu-1 abgebildet werden.

Mit normalen Dateinamen funktionieren Befehle wie ForceDirectory, CopyFile und SHFileOperation völlig richtig. Wenn jedoch eine Datei mit langem Pfad (mehrere Unterordner) kopiert werden muss, dann versagen diese Befehle und bringen Fehlermeldungen wie: "Dateiname zu lang"

Als Beispiel:

die Quelldatei:

"D:\Info\Windows\Server-2003\Windows 2003 Server Infos\323360 - SO WIRD'S GEMACHT Installieren und Konfigurieren eines DHCP-Servers in einer Active Directory-Domäne in Windows Server 2003-Dateien\1ptrans.gif"

muss nach

"F:\Info\Windows\Server-2003\Windows 2003 Server Infos\323360 - SO WIRD'S GEMACHT Installieren und Konfigurieren eines DHCP-Servers in einer Active Directory-Domäne in Windows Server 2003-Dateien\1ptrans.gif"

kopiert werden.

Versucht habe ich es auch mit TFileStream, dabei wird aber eine Schutzverletzung ausgelöst sobald ich versuche die Zieldatei zu öffnen (TFileStream.Open).

Gruss et2004
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 13:47
Hi,

fährst du denn auf deinem USB Device auch ein file system, welches so lange Dateinamen unterstützt?

Grüße vom marabu
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 13:53
Da hat Marabu ganz recht. DieUSB-Festplatte ist vermutlich mit FAT32 formatiert, da dies das beste Austauschformat ist.
Dort sind aber nur Dateinamen mit 31 Zeichen erlaubt, waehrend NTFS 255 Zeichen erlaubt.

Wer macht eigentlich so lange Namen (ausser Word)? Das ist einfach unmoeglich korrekt einzugeben.
  Mit Zitat antworten Zitat
et2004
(Gast)

n/a Beiträge
 
#4

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 13:58
Hallo marabu!

Beide Platten haben NTFS als Dateisystem. Der Fehler tritt sowohl unter WinXP als auch auf dem Server 2003 Standard auf.

Ich habe beim Debuggen folgenden Effekt festgestellt: ich kann auf der Ziel-Festplatte den langen Ordner nicht mit ForceDirectory erstellen. Deswegen habe ich mir diese Funktionalität nachgebaut und erstelle die Ordner mit CreateDirectory. Bei dem letzten und längsten Ordner (s.O.) steigt auch CreateDirectory mit einer Fehlermeldung aus. Ich habe aber ein WorkAround und erstelle mir einen Dummy-Ordner mit einem kurzen Namen und setze dann RenameFile ein und habe somit einen Ordner mit langen Namen.

Gruss et2004
  Mit Zitat antworten Zitat
et2004
(Gast)

n/a Beiträge
 
#5

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 14:03
Hallo Robert Marquardt!

Die langen Dateinamen stammen aus einem Windows Administrator Forum (HTML-Seite welche mit dem IE geespeichert worden ist).

Gruss et2004
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 14:18
Also sooo lange Dateinamen sind ja icht nur unpracktisch zu lesen, sondern es könnte auch noch andere Probleme geben.

In Windows kann eine Verzeichnisangabe, incl. Laufwerk, Dateiname und dem abschließendem #0, maximal 260 Zeichen lang sein.

Wenn jetzt schon "nur" der Dateiname extrem lang ist, dann kann es sein, das die estlichen Informationen nicht mehr in den Puffer reinpassen.

Aber wenn die Pfadangabe gerade noch so Platz habt, dann können dieses unter Umständen in einem anderem Verzeichnis nicht mehr ausreichend sein.

Sollte z.B. deine USB-Festplatte intern, oder sichtbar nicht direckt über 'ne kurze Laufwerkskennung angesprochen werden wird es eng.



PS: I selber hatte auch mal nach 'nem ähnlichem Fehler gesucht.
Beim Kopieren wurde nach 'ner Weile, ohne erstichlichen Grund, abgebrochen.
Am Ende war es so, das ich meine Dateien zum Sichern in ein Unterverzeichnis einer anderen Platte kopieren wollte, die Originaldateien lagen allerdings im Root-Verzeichnis ... und nur ja, durch die dadurch verlängerte Pfadangebe hab ich halt an die Grenze durchstoßen -.-''
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
et2004
(Gast)

n/a Beiträge
 
#7

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 14:39
Ich kann es leider nicht beeinflussen welcher Benutzer sich welche Dateien auf den Datenserver speichert. Man kann es den Leuten immer wieder sagen: Bitte kurze Dateinamen eintragen ... nach einer Woche habe die alles wieder vergessen (--> allgemeine Admin-Probleme ;-) )

Mir geht es dabei nur um die Sicherung der Daten und mein Programm sollte dann alle Dateien auf die externe Platte übertragen (egal wie lang die Dateinamen sind).
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 17:15
Zitat von et2004:
Ich habe aber ein WorkAround und erstelle mir einen Dummy-Ordner mit einem kurzen Namen und setze dann RenameFile ein und habe somit einen Ordner mit langen Namen.
Wenn du eh schon ein Programm einsetzt um die gespeicherten Web-Seiten zwischen Platte und USB device auszutauschen, dann würde ich versuchen die vom Explorer vorgeschlagenen und vom Benutzer unglücklicherweise akzeptierten Namen wieder zu kürzen. Ist nicht so schwer. Der Name der Datei steht ja immer noch im TITLE element der gespeicherten Seite.

marabu
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 23. Sep 2005, 23:18
Moin et2004,

das Problem ist wohl, dass Du nicht 260 Zeichen, sondern 260 Byte für den Pfad zur Verfügung hast.
Da es sich in der Regel aber wohl um Unicode handeln dürfte, hast Du nur die Hälfte davon an Zeichen zur Verfügung.
Solange ein einzelner Abschnitt nicht zu lang wird, kann man solche Strukturen anlegen, nur rauskopieren geht dann nicht mehr.
Unter Windows 2000 hatte ich schon den Effekt, dass der Explorer, ohne sinnvolle Fehlermeldung, zwangsweise beendet wurde.
Den gleichen Ordner dann über XP angezeigt (per Adminfreigabe das Laufwerk verbunden) gab es dann auch die entsprechende Fehlermeldung
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateien mit langen Pfaden bzw. Dateinamen kopieren

  Alt 24. Sep 2005, 12:03
Soweit ich das bisher mitbekommen hab, werden auch für Unicode 260 Zeichen verwendet (520 Byte) ... jednefallt hatte ich in dieser Richtung noch keine Probleme.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 04:47 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