Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Rekursive Dateisuche friert Programm ein. (https://www.delphipraxis.net/6306-rekursive-dateisuche-friert-programm-ein.html)

moori 6. Jul 2003 12:24


Rekursive Dateisuche friert Programm ein.
 
Hallo zussammen,

hab ein kleines Problem beim "Rekursiv nach Dateien suchen".
Eigentlich dachte ich, ich hab hier schon mal so eine Frage gefunden, doch ich kann sie jetzt nicht mehr finden.

Ich suche nach Dateien. Code ist dem in der CODE-LIBRARY ähnlich. Auch dort ist das Problem das während der Suche das Programm einfriert. D. h. es werden keine Events ausgelöst und das Formular ist "tod". Hat mich eigentlich nie gestört, aber ich möchte einen "Abbrechen-Button" verwenden.

Wie kann ich einen "Abbrechen-Button" verwenden, um aus der Prozedure
Delphi-Quellcode:
GetFilesInDirectory('C:\','*.*',listbox1.items,checkbox1.checked);
auszusteigen.

Kann mir jemand einen Tipp geben.

Dank im Voraus.

Gruss Moori

mirage228 6. Jul 2003 12:45

pack das ganze in einen Thread und beende Thread dann über den "Abbrechen" Button.

Christian Seehase 6. Jul 2003 13:16

Moin Moori,

Du könntest auch einfach einmal Application.ProcessMessages in die Suchschleife legen (den Source für die Funktion hast Du ja), und dann immer hinter dem Rekursiven Aufruf der Funktion eine Abfrage nach der Abbruchbedingung einbauen.
Bedingung erfüllt: Exit

Die Bedingung wird dann durch den Abbruch Button gesetzt.

moori 6. Jul 2003 14:42

Application.ProcessMessage funzt
 
Hallo Christian Seehase und mirage228,

Danke für eure Hilfe.

Ich habs mit dem Thread versucht, aber es hat nicht wirklich funktioniert. Ich erhalte keine Fehler, aber trotzdem "friert" mein Formular ein.

Das mit der
Delphi-Quellcode:
Application.ProcessMessages
funktioniert. Obwohl ich nicht genau weiss was das macht. Auf jedenfall habe ich während der "Datei-Suche" zugriff auf mein Formular. Das Problem mit der "Verlangsamung" der Suchfunktion hab ich auch ganz leicht umgehen können.

Danke für eure Hilfe.

Gruss Moori

Christian Seehase 6. Jul 2003 14:45

Moin Moori,

wenn Du das Durchsuchen der Verzeichnisse in eine Thread auslagerst kann das Programm eigentlich nicht einfrieren.
Da müsstest irgendwo ein Fehler sein.

Application.ProcessMessages sorgt dafür, dass anstehende Windows Botschaften verarbeitet werden.


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