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?