Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Funktion / Prozedur warten lassen bis... (https://www.delphipraxis.net/80980-funktion-prozedur-warten-lassen-bis.html)

TheMiller 18. Nov 2006 14:17


Funktion / Prozedur warten lassen bis...
 
Hallo,

wie kann ich es realisieren, dass eine eigene Funktion oder Prozedur auf ein Ergeinis wartet... Zum Beispiel auf das Ändern eines Edit-Feldes oder den Click auf einen Button?

Danke!

Sunlight7 18. Nov 2006 14:25

Re: Funktion / Prozedur warten lassen bis...
 
Hallo,

das wäre eine Möglichkeit:
Delphi-Quellcode:
procedure TForm1.DoSomething;
begin
   // Mach was
   
   Clicked:=False;
   While not Application.Terminated {and Visible} do begin
      Sleep(10); // CPU schonen
      Application.ProcessMessages;

      If Clicked then begin
         // Mach was anderes
         Break; // Oder Exit;
      end;
   end;
end;

procedure TForm1.ButtonClick(...);
begin
   Clicked:=True;
end;
Gesünder wäre es, wenn möglich nen Timer zu nehmen, oder es in der OnClick zu machen. :wink:

TheMiller 18. Nov 2006 14:30

Re: Funktion / Prozedur warten lassen bis...
 
Ja Super!

Jetzt weiß ich auch, was Application.ProcessMessages bedeutet! Danke!

Balu der Bär 18. Nov 2006 14:31

Re: Funktion / Prozedur warten lassen bis...
 
Mittels Sleep frierst du aber die ganze Anwendung ein, was überhaupt nicht von Vorteil ist. Gucke daher lieber nach Hier im Forum suchenDelay.

TheMiller 18. Nov 2006 14:34

Re: Funktion / Prozedur warten lassen bis...
 
Schon klar, aber habs einfach so gelöst:

Delphi-Quellcode:
[...]
while not Continue do
    Application.ProcessMessages;
[nach dem Klicken]
Des war's schon *g*

Brainshock 18. Nov 2006 16:27

Re: Funktion / Prozedur warten lassen bis...
 
Geilomat,

da hat aber mal einer die Programmierung mit Ereignissen verstanden. :wink:

TheMiller 18. Nov 2006 16:30

Re: Funktion / Prozedur warten lassen bis...
 
??? :gruebel:

Oxmyx 18. Nov 2006 16:52

Re: Funktion / Prozedur warten lassen bis...
 
Welchen Sinn ergibt es denn, die Programmausführung künstlich zu unterbrechen, bis ein Ereignis eintritt? Um genau das besser zu machen, gibt es doch Ereignisse überhaupt! Sprich: Die Funktion, die dein Programm ausführen soll, wenn z.B. ein Button gedrückt wird, verknüpfst du mit dem OnClick-Ereignis.

TheMiller 18. Nov 2006 16:55

Re: Funktion / Prozedur warten lassen bis...
 
Das hat schon seinen Sinn. Denke mal an die Technik der Splash-Screens..

Sunlight7 18. Nov 2006 17:02

Re: Funktion / Prozedur warten lassen bis...
 
Also für Splash-Screens hab ich ne andere Technik, da brauchts sowas nicht für.

Aber es kann schon mal (aber selten) vorkommen, das man um so eine (ungesunde) Programmierweise nicht herum kommt.

Martin K 18. Nov 2006 17:13

Re: Funktion / Prozedur warten lassen bis...
 
Zitat:

Zitat von DJ-SPM
Schon klar, aber habs einfach so gelöst:

Delphi-Quellcode:
[...]
while not Continue do
    Application.ProcessMessages;
[nach dem Klicken]
Des war's schon *g*

Um eine ständige CPU-Auslastung zu vermeiden, solltest Du noch ein Sleep(1) einbauen, so wie Sunlight7 schon geschrieben hat:
Delphi-Quellcode:
[...]
while not Continue do
begin
  Sleep(1);
  Application.ProcessMessages;
end
[nach dem Klicken]
Schau Dir doch mal im Taskmanager an, mit was für einer CPU-Auslastung Dein Programm sonst läuft...

TheMiller 18. Nov 2006 17:17

Re: Funktion / Prozedur warten lassen bis...
 
Ok! Mach ich

Oxmyx 18. Nov 2006 17:22

Re: Funktion / Prozedur warten lassen bis...
 
Ich bin mir zu 98% sicher, dass es sich, da es sich um eine Anfängerfrage handelt, nicht um diesen einen Fall für die Statistik handelt, in dem man tatsächlich so unsauber programmieren muss.

ErazerZ 18. Nov 2006 17:24

Re: Funktion / Prozedur warten lassen bis...
 
Zitat:

Zitat von DJ-SPM
Ja Super!

Jetzt weiß ich auch, was Application.ProcessMessages bedeutet! Danke!

Sag einmal, wie hast du die 1.168 Beiträge geschafft ohne auf ProcessMessages zu stoßen? Chat? :P

Sunlight7 18. Nov 2006 17:27

Re: Funktion / Prozedur warten lassen bis...
 
Ein
Delphi-Quellcode:
while not Continue and not Application.Terminated do
wäre auch noch angesagt. Bzw. auch ne Prüfung, im FormHide, FormClose/FormDestroy, sonst kanns zu ner netten AV kommen, wenn das Programm/Form einer zumacht während es in der Schleife ist...
Oder einer kann nicht mehr auf den Button klicken, um aus der Schleife zu gehen, wenn das Fenster unsichtbar ist :shock: :mrgreen:

@Martin K: Jedesmal wenn ich auf Deinen Avatar gucke werd' iich immmmer sooo hyyypnotisiiiiiiiiiiertttttttttt :roteyes: :mrgreen:

@Oxmyx: Auch Anfänger müssen aus Ihren Fehlern lernen :mrgreen:

TheMiller 18. Nov 2006 17:30

Re: Funktion / Prozedur warten lassen bis...
 
Bin schon lange kein Anfänger mehr.. aber ausgelernt hat nie jemand *g* Kann auch sein, dass sich jemand mal eine längere Zeit in anderen Aufgabenfeldern bewegt, in denen sowas nicht benötigt ist... So...!


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