![]() |
procedure von außerhalb abbrechen
Stellt euch mal vor, ich hätte ein Programm, das macht:
Delphi-Quellcode:
in echt macht es natürlich was Sinnvolleres, aber ich habe mir erlaubt, die Sache hierrauf zu vereinfachen...
procedure TForm1.Button1Click(Sender: TObject);
var i: byte; begin while true do begin inc(i); caption := inttostr(i); end; end; Was ich jetzt will ist im Grunde ein Button, - auf den ich klicken kann, während mein Programm zählt - wäre notfalls möglich mit ProcessMessages, aber das scheint mir die Sache sehr langsam zu machen - der dafür sorgt, dass das mein Programm aufhört zu zählen damit wäre ich für den Anfang (hoch) zufrieden. Michael |
Re: procedure von außerhalb abbrechen
Schau unter Thread's
vielleicht ist das was |
Re: procedure von außerhalb abbrechen
Ich könnte mir auch sowas wie eine Callback-Funktion vorstellen....
Innerhalb Deiner Schleife wird eine (als Parameter übergebene) Funktion aufgerufen, die eine Abbruchbedingung setzt procedure TuWas ( callbackfunc : function ); begin while bedingung do begin ... ... bedingung := callbackfunc; end; end Schau mal unter "Prozeduren und Funktionen als Parameter" Ciao |
Re: procedure von außerhalb abbrechen
@neo: Ich hatte danach gesucht, aber 199 (oder so) Treffer motivieren nicht, weiter zu suchen
@billa: werde ich machen |
Re: procedure von außerhalb abbrechen
|
Re: procedure von außerhalb abbrechen
Zitat:
ICh habe ja schon mal kurz reingeschaut, und grade was zu meckern:
Delphi-Quellcode:
procedure TForm1.UpdateLVCaption(Index, Count: Integer);
begin Listview1.Items[Index].SubItems[0] := 'Position: ' + IntToStr(Count); if Count >= 10000 then //<-- wenn da nur "=" steht, rennt mein schneller Rechner drüber weg, ohne was zu machen Listview1.Items[Index].SubItems[0] := 'fertig'; end; |
Re: procedure von außerhalb abbrechen
das musst du Luckie sagen ;) Aber selbst wenn es so ist, dann ist dies nicht wirklich gut.
Was ist das für eine Kiste ? Mein Arbeitsrechner 2,4 (glaub ich) GHz PIV schuckt den Kram. |
Re: procedure von außerhalb abbrechen
Der Luckie wird das auch hier lesen ;)
Das gleiche Thema hatten wir schonmal, da ginge es um eine Uhrzeit zu der was gestoppt werden sollte. >= ist auf jeden Fall besser. PS: Der Rechner ist nicht wirklich schnell, war eher ironisch, als ich meinte, dass er sogar so schnell ist, dass er das mit dem =10000 garnicht mitbekommt. (XP2000+) |
hmm,
meiner nimmt es, iss auch XP2000+ zuhause.
|
Re: procedure von außerhalb abbrechen
was verstehst du unter "nimmt es"? Es läuft bei mir auch, nur kommt nie Stopp, weil die wahrscheinlichkeit, dass die abfrage kommt, wenn es 10000 - und zwar genau 10000 - ist ist so klein, dass es bei mir noch nie der fall war, sondern der counter einfach immer weiter ging...
|
Re: procedure von außerhalb abbrechen
so wie ich das aber verstehe ist das der Sinn von syncronice , oder?
Dann funzt der doch nicht !? Auch neu bei Threads bin, siehe => ![]() |
Re: procedure von außerhalb abbrechen
Nix Threads.
Delphi-Quellcode:
var
Canceled: Boolean = FALSE; procedure TForm1.Button2Click(Sender: TObject); begin Canceled := TRUE; end; procedure TForm1.Button1Click(Sender: TObject); var i: byte; begin while not Canceled do begin inc(i); caption := inttostr(i); Application.ProcessMessages; end; end; |
Re: procedure von außerhalb abbrechen
Hi Luckie, so hab ich es auch gedacht.
Geht das bei ner Sache, die ca. 10 min meinen Rechner auslastet nicht derb auf die Performance, mit dem Processmessages? Und vor allem, auch wenn es nicht auf die Leistung geht, wenn die einzelnen Schleifendurchgänge aber länger sind als "inc(i)", dann ist die Abfrage nicht oft genug. Die Thread kann man, so hab ich es verstanden (aber noch nicht getestet) ja immer mal kurz anhalten. |
Re: procedure von außerhalb abbrechen
Dann wäre in der tat zu überlgen, ob man nicht einen Thread nutzt.
|
Re: procedure von außerhalb abbrechen
durchaus.
...bei neuen Problemen, die dabei auftreten, melde ich mich dann wieder :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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