AGB  ·  Datenschutz  ·  Impressum  







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

Funktion von User abbrechen lassen

Ein Thema von Zioone · begonnen am 13. Nov 2008 · letzter Beitrag vom 13. Nov 2008
Antwort Antwort
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#1

Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 08:27
Hallo,
ich hab da eine Funktion die da recht lange dauern kann.
Also möchte ich das der User diese ggf. abbrechen kann.

Also ich zeige ein "Abbrechen-Button" an, alles andere wird deaktiviert.

Über "Application.ProcessMessages;" geht er jetzt auch in die "ButtonClick"-Funktion rein.
Nur leider weiß ich jetzt nicht, wie ich aus der "ButtonClick" funktion jetzt ein komplett andere Funktion abbrechen kann.
Mit Exit, beende ich ja nur die "buttonClick" Funktion

Schon bisschen rumprobiert aber irgendwie nichts gefunden was dies macht.

Über Hilfe wäre ich dankbar
Christine
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 08:28
Du könntest eine boolsche Variable anlegen. Die du in deiner abzubrechenden Fkt. abfragst und in deiner ButtonClick-Proz. setzt.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#3

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:23
ah ok
wäre zu einfach gewesen *gg*

Aber nun hab ich ein Problem, er geht jetzt in die Funktion rein und Überprüft ob die Variable gesetzt ist, wenn ja dann hab ich "Exit". Das Funktioniert auch, aber trotzdem macht er den rest weiter, weil er ja schon mal in der Funktion war und dort dann die "Prüfung" bestanden wurde
Christine
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:25
Dann zeige mal ein bisschen Code,
sonst stochern wir im Nebel...
Ralph
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#5

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:33
hm k^^

FOriginal:=Stringlist
Delphi-Quellcode:
procedure TfrmLogView.btnabortClick(Sender: TObject);
var
  abort: boolean;
begin
  abort:=true;
  Time_search(FOriginal,abort);
end;

procedure TfrmLogView.Time_search(FOriginal: TStringlist;abort: boolean);
var
  i, j, ii,i2,i3: Integer;
  vs: string;
  b: boolean;
begin
  
 if abort=true then
    exit;
  cbo_date.Clear;
  cbo_date.Text:='--- Datum wählen ---';
  ii:=-1;

  TrackBar1.Max:=rtfLines.Lines.Count;
  TrackBar1.Enabled:=true;
  tlbfind.Enabled:=true;
  tlbSave.Enabled := true;

  //--mach noch mehr

  ProgressBar1.Position:=ProgressBar1.Max;
  ProgressBar1.Position:=0;
  btnabort.Visible:=false;
end;
also wie gesagt das
if abort=true then
exit;
macht er ja, wenn ich das weglassen würde, würde er die Time_search ja 2mal ausführen
Christine
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:39
Entweder habe ich Tomatos auf den Augen oder ich sehe nichts was einer Schleife oder Ähnlichem
gleich kommt was eine längere Zeit zum bearbeiten braucht.

Da kann man eigentlich auch nichts abbrechen.

Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:39
Hmm, wo/wie wird Time_Search aufgerufen?

Aber generell war es wohl etwas anders gedacht:
Delphi-Quellcode:
private
  FTimeSearchAbort : Boolean
end;

//..

procedure TfrmLogView.btnabortClick(Sender: TObject);
begin
  FTimeSearchAbort:=true
end;


// vor Aufruf von TimeSearch (wo?) FTimeSearchAbort:= false setzen

procedure TfrmLogView.Time_search(FOriginal: TStringlist);
begin

 // hier an geeigneter Stelle z.B. Schleife o.Ä.
 // auf FTimeSearchAbort reagieren

end;
Ralph
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:43
Hallo,

was machst Du da?

Du schreibst doch, dass Du eine laufende Funktion über einen Button abbrechen lassen willst.
Beim Klick auf den Button rufst Du die Funktion aber ein zweites Mal auf, wo sie natürlich sofort abgebrochen wird, die bereits laufende Funktion bekommt davon natürlich nichts mit.

Du brauchst eine "globale" Variabel abort, die Du im Buttonklickereignis auf True setzt und dort, wo Dein Kommentar steht "//--mach noch mehr " musst Du eine geeignete Stelle suchen, an der Du aus der Funktion, wenn abort = true ist, mit Exit aussteigen kannst.
Z. B. Sowas in der Form:
Delphi-Quellcode:
while not Table.Eof do begin
  // hier lesen oder schreiben wir.
  Table.Next;
  If abort then exit;
  Application.ProcessMessages;
end;
PS: TurboPascal und Taaktaak waren schneller als ich
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#9

Re: Funktion von User abbrechen lassen

  Alt 13. Nov 2008, 09:46
wahh.
Da hat ich wohl Denkfehler

Geht jetzt, danke
Christine
  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 04:48 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