Hallo zusammen,
ich habe mal ein kleines Beispielprogramm gemacht um mein Problem zu erklären.
Zwei leere Textdateien werden unter C:\ (im Root) angelegt.
Es wird mit Findfirst und Findnext nach den beiden Dateien gesucht (nichts weiter gemacht) und mit FindClose wieder zugemacht.
Wenn ich jetzt mit TFileStream.Create auf die Dateien zugreifen will (natürlich nacheinander), dann geht es bei der einen Datei und bei der anderen nicht. Er geht bei der zweiten Datei ins Except rein...
Habt ihr eine Idee, warum das schief geht?
Das sieht ja so aus, als ob das FindClose sich nicht auf alle Dateien auswirkt, die es vorher mit FindFirst und FindNext bekommen hat.
Ich hoffe, ihr könnt mir da helfen.
Viele Grüße
Alex
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
F : TSearchRec;
Success : Boolean;
begin
try
if FindFirst('C:\*.txt', faAnyFile, F)= 0 then
begin
Success := True;
while Success do
begin
//Mach irgendwas mit der Datei...
Success := FindNext(F) = 0;
end;
end;
finally
FindClose(F);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
SL : TStringList;
begin
SL := TStringList.Create;
try
SL.SaveToFile('C:\1.txt');
finally
SL.Free;
end;
SL := TStringList.Create;
try
SL.SaveToFile('C:\2.txt');
finally
SL.Free;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
F : TSearchRec;
TmpStream : TFileStream;
begin
try
if FindFirst('C:\*.txt', faAnyFile, F)= 0 then
begin
try
{ Versuchen, die Datei öffnend zu lesen }
TmpStream := TFileStream.Create (F.Name, fmOpenRead);
except
Exit;
end;
TmpStream.Free;
end;
finally
FindClose(F);
end;
end;