Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AV bei FindNext (https://www.delphipraxis.net/70065-av-bei-findnext.html)

Flare 24. Mai 2006 14:45


AV bei FindNext
 
Hey ho!

Ich habe hier folgenden Code:
Delphi-Quellcode:
function getdirs(pfad: string): TStrings;
var search: TSearchRec;
begin
  if FindFirst(pfad, faAnyFile, search)=0 then
  begin
    repeat
      Result.Add(search.Name);
      Showmessage(search.Name);
    until FindNext(search)<>0;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  getdirs('Y:\*.*');
end;
Wobei hier bitte nicht darum gestritten wird warum die Funktion getdirs heist, ich aber alle Dateien abfrage, das ändere ich später.
Mein Problem hier ist, diese Funktion klappt halbwegs. FindFirst wird erfolgreich aufgerufen, FindNext dann auch, das 2. mal Findnext auch, nur beim dritten mal (komischerweise immer das dritte Mal, egal welchen Ordner ich zum Aufruf benutze) bekomme ich ne AV.
Woher kommt die, bzw. wie bekomme ich die weg? :wall:

Ich wäre für Lösungen sehr dankbar!


Flare

Hawkeye219 24. Mai 2006 15:04

Re: AV bei FindNext
 
Hi!

Es wundert mich eigentlich mehr, daß es schon beim ersten Mal funktioniert. Ich vermisse die Zeile, in der die Result-Stringliste erzeugt wird. Zudem verwirfst du beim Aufruf der Funktion deren Rückgabewert. Es wäre vielleicht besser, der Funktion eine vorbereitete Stringliste zu übergeben und die Funktion in eine Prozedur umzuwandeln.

Noch eine Anmerkung: einen FindClose-Aufruf solltest du noch einbauen.

Gruß Hawkeye

Flare 24. Mai 2006 15:07

Re: AV bei FindNext
 
Gut, ich habe in der zwischenzeit das ganze als Prozedur gebaut, was das in eine vorhandene Liste (wie du sagtest) direkt einbaut. Und dass man eine Stringlist erst erzeugen muss ist mir neu, ich arbeite sonst immer mit ListBoxen, die scheinen das ja selber zu machen :angel2:

Danke! Problem gelöst! :thumb:

Flare

DGL-luke 24. Mai 2006 15:22

Re: AV bei FindNext
 
jop, auch ein Memo erzeugt die stringliste selbst. Denn ein memo ohne strings wäre irgendwie - witzlos. Ansonsten musst du das aber natürlich selbst erzeugen und auch wieder freigeben, wenn du damit fertig bist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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