AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateisuche in Thread mit Abbrechen

Ein Thema von Scrutor · begonnen am 5. Jun 2007 · letzter Beitrag vom 5. Jun 2007
Antwort Antwort
Scrutor

Registriert seit: 23. Sep 2006
Ort: Moers
37 Beiträge
 
Turbo Delphi für Win32
 
#1

Dateisuche in Thread mit Abbrechen

  Alt 5. Jun 2007, 10:03
Hallo zusammen,

ich habe folgendes Problem und hoffe mir kann hier einer aushelfen:

Ich muss in ca. 6000 Dateien einen String suchen, der sich innerhalb der ersten 4 Zeilen befindet.
Mit FindFirst suche ich nach den Dateien und lese dann die Zeilen von 1 bis 4 aus.
Mein Problem ist nun, dass natürlich das Programm während des Suchens einfriert, deswegen möchte ich die Suche in einen Thread auslagern.
Und dabei stell ich mich wohl ein bisschen doof an.

Ich möchte also einen Such-Thread starten, dem ich auch noch mindestens 2 Parameter mit übergebe.
Es sollte auch möglich sein durch klicken auf "Abbrechen", dass der Such-Thread sich beendet.

Über einen Lösungsvorschlag würde ich mich freuen.



mfg
Scrutor
90% aller Computerprobleme sitzen vor dem Bildschirm !
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dateisuche in Thread mit Abbrechen

  Alt 5. Jun 2007, 10:26
so gehts:
Delphi-Quellcode:
TSearchThread = class(TThead)
protected
  fCancelVar: PBoolean;
  procedure Execute(); override;
public
  constructor Create(ACancelVar: PBoolean);
end;
[...]
constructor TSearchTread.Create(ACancelVar: PBoolean);
begin
  inherited Create(True);
  fCancelVar := ACancelVar;
  Resume();
end;

procedure TSearchThread.Execute();
begin
  fCancelVar := False;
  //Search for file until finished or fCancelVar = True
end;
Du übergibst also einen Pointer auf einen Boolean (welcher im Private deiner Form/klasse sein sollte) deinem Thread.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Dateisuche in Thread mit Abbrechen

  Alt 5. Jun 2007, 10:28
Das Abbrechen und Unterbrechen brauchst du gar nicht selber machen - beim Abbrechen kannst du den Thread einfach terminaten (der sollte ja sowiso in einer while not Terminated do Schleife laufen) und zum Unterbrechen einfach Suspenden
  Mit Zitat antworten Zitat
Scrutor

Registriert seit: 23. Sep 2006
Ort: Moers
37 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Dateisuche in Thread mit Abbrechen

  Alt 5. Jun 2007, 12:01
Danke schön euch beiden.
Ich hab das nun wie folgt umgesetzt:

Delphi-Quellcode:
type
  TSearchThread = class(TThread)
  protected
    procedure Execute; override;
end;

var
  FormMain: TFormMain;
  SearchThread:TSearchThread;

[...]

procedure TSearchThread.Execute;
begin
  while not Terminated do
   begin
     SucheTextInDateien(FormMain.EditSuche.Text);
   end;
end;

procedure TFormMain.btnSucheClick(Sender: TObject);
begin
  if btnSuche.Caption='Abbrechenthen
   begin
     SearchThread.Terminate;
     btnSuche.Caption:='Suchen';
     FormMain.Status.Panels.Items[0].Text:='Suche abgebrochen !';
     exit;
   end;
  if trim(EditSuche.Text)='then exit;
  btnSuche.Caption:='Abbrechen';

  SearchThread := TSearchThread.Create(false);
  SearchThread.FreeOnTerminate := true;
end;
Es funktioniert auf jeden Fall.


mfg
Scrutor
90% aller Computerprobleme sitzen vor dem Bildschirm !
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:58 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