![]() |
Problem mit Search procedure
Hi all.
Kann mir jemand hierbei helfen. Immer wenn ich mit dieser ![]() --------------------------- Benachrichtigung über Debugger-Exception --------------------------- Im Projekt TXT.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00456CB2 in Modul 'TXT.exe'. Lesen von Adresse 00000000' aufgetreten. Hier mal der Code:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, ComCtrls, StdCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; Memo1: TMemo; Splitter1: TSplitter; Datei: TMenuItem; Aktualisieren1: TMenuItem; ListBox1: TListBox; procedure Aktualisieren1Click(Sender: TObject); private { Private-Deklarationen } public mompath:string; files:TStrings; { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True); var SR: TSearchRec; begin RootFolder := IncludeTrailingPathDelimiter(RootFolder); if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin FileList.Add(RootFolder + SR.Name); // hier tritt der Fehler auf end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; procedure TForm1.Aktualisieren1Click(Sender: TObject); var i:integer; begin FindAllfiles(files,'C:\Programme\Selfmade\Reader\TXT files','*.txt',false); for i:=0 to files.count -1 do Listbox1.Items.addObject(extractFileName(files.Strings[i]),TObject(files.Strings[i])); end; end. |
Re: Problem mit Search procedure
und wo wird deine StringListe "files" erzeugt?
|
Re: Problem mit Search procedure
Danke für den Hinweis.
Jetzt geht's. |
Re: Problem mit Search procedure
Wieso wird die Liste eigentlich als Var-Parameter übergeben? :gruebel:
|
Re: Problem mit Search procedure
Weil ich sie noch mehrmals im programm brauchen werde.
|
Re: Problem mit Search procedure
Ich meinte den Funktionskopf.
Zitat:
|
Re: Problem mit Search procedure
Da musst du
![]() |
Re: Problem mit Search procedure
Gut, dann schau Du mal
![]() |
Re: Problem mit Search procedure
Hallo,
wenn Du Code von irgendwo kopierst, dann ist das vollkommen ok. Allerdings solltest Du um deinetwillen auch versuchen, das Ganze zu verstehen. Zitat:
=> nachholen? ;) |
Re: Problem mit Search procedure
Ich habs verstanden.
Die Stringlist wird während der Procedure verändert also muss des eine variable sein. Weis aber jetzt dass man Stringlisten erstellen/freigeben muss. |
Re: Problem mit Search procedure
Das wäre prinzipiell richtig, aber hier handelt es sich um eine Objektinstanz, d.h. intern ist das bereits ein Zeiger, die Übergabe erfolgt also automatisch By Reference. An Deiner Stelle würde ich die Liste als const-Parameter übergeben, denn der Zeiger (die Referenz) ändert sich nicht bei der Abarbeitung der Prozedur.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz