AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit FindFirst, FindNext und TFileStream
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit FindFirst, FindNext und TFileStream

Ein Thema von AJ_Oldendorf · begonnen am 24. Jun 2009 · letzter Beitrag vom 24. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#1

Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:27
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;
Angehängte Dateien
Dateityp: zip findfirst__findnext_167.zip (7,2 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:29
Fang doch mal ab, welche Exception Auftritt, bzw. welcher Fehlercode gesetzt wird. Einfach so kann man nicht sagen, was der Fehler ist.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Highttower

Registriert seit: 2. Jun 2009
Ort: Worms
88 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:32
Man halte mich für Paranoid aber muss man nicht jede Klasse und das ist TSearchRec, nicht erst instanzieren? bevor man sie benutzt? Oder wird das in FindFile gemacht?
Tobi
Rechtschreib und Semikolion Fehler dürfen behalten werden.
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:33
TSearchRec ist nur ein Record und keine Klasse.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:33
Delphi-Quellcode:
try
  { Versuchen, die Datei öffnend zu lesen }
  TmpStream := TFileStream.Create (F.Name, fmOpenRead);
except
  aCardinal := GetLastError;
  ShowMessage(IntToStr(aCardinal));
  Exit;
end;
GetLastError liefert eine 2...

Viele Grüße
Alex
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:36
So. Nun wäre der nächste Schritt, in der MSDN die Fehlercodes durchzuschauen und dann danach seine Rückschlüsse führen. Die stehen alle hier.
ERROR_FILE_NOT_FOUND
2 (0x2) The system cannot find the file specified.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
AJ_Oldendorf

Registriert seit: 12. Jun 2009
385 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:41
Dann liefert GetLastError etwas falsches.

Die Datei ist ja eindeutig da.
Da führt kein Weg dran vorbei!

Viele Grüße
Alex
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#8

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:43
Zitat von AJ_Oldendorf:
Dann liefert GetLastError etwas falsches.
GetLastError macht selten Fehler.

Hast du dir im Debugger schonmal angesehen, was genau in F.Name steht?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:46
neee, siehe auch anderer Thread >>> relative Pfade

Delphi-Quellcode:
. // vvvv
FindFirst('C:\*.txt', faAnyFile, F)= 0 then
    begin
      try
        { Versuchen, die Datei öffnend zu lesen }
        TmpStream := TFileStream.Create('C:\' + F.Name
                                     // ^^^^^^^
$2B or not $2B
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Problem mit FindFirst, FindNext und TFileStream

  Alt 24. Jun 2009, 14:49
Spoiler doch nicht alles .
Fridolin Walther
  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 03:16 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