![]() |
TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Hallo zusammen,
... edt1.Text:= 'c:\Lieder\$$$$$$_sdsfdsfdsfdsfdsfsd321fdsfdsf31ds f1dsf1ds3f1dsf1ds3f1ds31fds31f1dsf1dsf31dsf321ds1f ds31fds321f1dsf1dsf31ds32f1ds1f3ds1f3d2sf1ds32f1ds 3fds3f1ds3f1ds31fds1f312dsf312dsf31ds1fds31fds32f1 dsf1ds3f1ds3f12ds13fds132fsed\27 - Ieva Zasimauskaitė (Lithuania) - When We're Old.mp3' // das sind 285 Zeichen... …
Delphi-Quellcode:
var
FS: TFileStream; begin try FS := TFileStream.Create(edt1.Text, fmOpenRead); finally FS.Free; end; end; Laut Delphi Hilfe kann ich keine Grenze bei TFileStream wegen Pfadlänge oder Unicodezeichen erkennen. Weiß jemand warum Delphi crasht und die Meldung bringt: Datei nicht gefunden? Vielen Dank schon mal im Voraus! |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
NTFS Wikipedia:
...Dateinamen können... bis zu 255 Zeichen lang sein und aus fast beliebigen Unicode-Zeichen bestehen... ...eine maximale Länge des kompletten Pfadnamens von 32.767 Zeichen (allerdings beschränkt Windows bis zur Version Windows 10 Build 14352 die nutzbare Länge auf 260 Zeichen)... |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Kann mir nur vorstellen das der Pfad einfach zu lang ist.
Mit dem FileStream hat das nichts zu tun. MAX_PATH ?? 260.. du hast aber 285 oops da war jemand schneller. gruss |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Windows lässt die Pfadlänge > 260 zu und andere Programme kommen auch mit der Pfadlänge > 259 klar.
Ich hatte nun angenommen, dass TFileStream mit der Pfadlänge > 259 kein Problem hätte. Im Moment weiß ich noch nicht wie ich das umgehen kann. |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Wenn Du ein commandprompt öffnest und da diese Zeichenkette reinkopierst und Return drückst, was passiert?
edit Zitat:
Helfen kann es den Namen in den ShortName umzuwandeln! |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Ich denke es sind die Leerzeichen zwischen dem String.
Zitat:
Kann jetzt aber nicht sagen ob der String den du hier reinkopiert hast verändert wird. Windows meldet mir das die Datei nicht gefunden wird. Zitat:
gruss |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Ich hab da eher das "$" Zeichen in Verdacht aber der TE soll mal was dazu sagen:wink:
|
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Zitat:
Gebe ich den String so unter Ausführen im Startmenü ein wird alles abgeschnitten was länger ist wie 260 gruss |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Problem gelöst!
Es ist die Verwendung des MAX_Path die angewendet wird, wenn eine direkte Pfadangabe verwendet wird! Wenn ich ein '\\?\' vor dem Pfad stelle, erkennt Windows dass es ein UNC Path ist (Windows Plattform abhängig). UNC hat *nicht* die Einschränkung von MAX_Path und es wird auf die entsprechende Windows-API umgeleitet. Gut zu wissen... ... edt1.Text:= '\\?\' + 'c:\Lieder\$$$$$$_sdsfdsfdsfdsfdsfsd321fdsfdsf31ds f1dsf1ds3f1dsf1ds3f1ds31fds31f1dsf1dsf31dsf321ds1f ds31fds321f1dsf1dsf31ds32f1ds1f3ds1f3d2sf1ds32f1ds 3fds3f1ds3f1ds31fds1f312dsf312dsf31ds1fds31fds32f1 dsf1ds3f1ds3f12ds13fds132fsed\27 - Ieva Zasimauskaitė (Lithuania) - When We're Old.mp3' // das sind 285 Zeichen... … So funktioniert nun alles. Danke für die entsprechenden Hinweise auf MAX_PATH, weil ich nur nach TFileStream gesucht hatte! :dp: |
AW: TFileStream crasht bei Dateiname=285 Zeichen mit Unicode
Naja super wenn es jetzt geht.
Aber die frage bleibt wie erstellst du den Pfad unter Windows ? Bei mir geht es nicht. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 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