Einzelnen Beitrag anzeigen

Benutzerbild von Woodman
Woodman

Registriert seit: 17. Mär 2007
74 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

':' im Dateinamen - Bug oder Feature?

  Alt 12. Jul 2015, 18:27
Betriebssystem: Win 8.1
Hallo Wissende,

für ein Projekt habe ich mir eine .ini-Datei erstellt, um mir dort Dateinamen merken zu können. Diese Dateinamen haben den Namen des Projektes und eine fortlaufende Nummer. Aus Versehen habe ich den Projektnamen ungefiltert übernommen - und so hieß ein (Test-)Projekt:
"Großer Test: Jetzt gehts" Dem entsprechent sah auch meine .ini-Datei aus:
Code:
[Parameter]
Projektname=Großer Test: Jetzt gehts
SLDName=I:\Urlaubsfotos\2012.08.17-09.21 Aus.SA+Center\Vortrag\2. Testvortrag\TestVortrag.sld
[MediaText]
0001_Text=Großer Test: Jetzt gehts_0001.rtf
0002_Text=Großer Test: Jetzt gehts_0002.rtf
0003_Text=Großer Test: Jetzt gehts_0003.rtf
0004_Text=Großer Test: Jetzt gehts_0004.rtf
0005_Text=Großer Test: Jetzt gehts_0005.rtf
0006_Text=Großer Test: Jetzt gehts_0006.rtf
0007_Text=Großer Test: Jetzt gehts_0007.rtf
Als mir endlich auffiel: ':' im Namen geht ja garnicht
Aber: Es ging!
Alle Text, die ich dort erfasst hatte ließen sich wieder aufrufen!
Im Explorer sah die Datei allerdings so aus:

Eine leere Datei mit dem Namen bis zum ':'! Wenn ich diese Datei gelöscht habe, hat mein Programm die die rtf-Dateien auch nicht mehr gefunden.

Um dieses Phänomen etwas näher zu untersuchen habe ich mir ein Miniprojekt geschrieben (Siehe Anhang). Die beiden Routinen sehen dabei so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
// SetCurrentDir(Edit1.Text);
  CurrentDocFile := Edit1.Text+'\'+Edit2.Text;
  RichEdit1.Lines.SaveToFile(CurrentDocFile);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  RichEdit1.Clear;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
// SetCurrentDir(Edit1.Text);
  CurrentDocFile := Edit1.Text+'\'+Edit2.Text;
  if FileExists(CurrentDocFile) then
     RichEdit1.Lines.LoadFromFile(CurrentDocFile)
  else
     ShowMessage('Datei "'+CurrentDocFile+'" nicht gefunden');
end;
Ich habe einen 4GB-USB-Stick mit NTFS formatiert und konnte auf diese Art und Weise etliche RTF-Dateien erzeugen und auch wieder lesen.! Zur Sicherheit habe ich dann noch eine größere Videodatei auf den Stick geladen und alle RTF-Dateien waren noch lesbar! So sieht es jetzt auf dem Stick aus:


Diese Geschichte funktioniert nur unter NTFS! Ist der Stick mit FAT32 formatiert, bekomme ich sofort eine Fehlermeldung wegen ungültigen Dateinamens.

Also: Ist dieses Verhalten von NTFS ein Bug oder ein Feature?
Miniaturansicht angehängter Grafiken
explorer-auszug.jpg   explorer-auszug2.jpg  
Angehängte Dateien
Dateityp: zip Test Filenames.zip (55,2 KB, 6x aufgerufen)
Keep
Horst
Delphi 10.1 Berlin Starter unter Windows 10 - 1803
  Mit Zitat antworten Zitat