![]() |
procedure waten lassen
hoi
wie kann ich eine prozedur warten lassen? ich möcht nicht "sleep" verwenden. sagern wir mal meine proceduren sehen so aus:
Delphi-Quellcode:
hat jemand ne idee?
procedure proc2;
begin //hier irgendetwas tuen bis 5sek um sind end; procedure proc1; begin proc2; // hier gehts nach 5 sek weiter end; |
Re: procedure waten lassen
Moin Pseudemys Nelsoni,
schau doch mal in der Code Library nach Delay. |
Re: procedure waten lassen
hallo christian, danke, das beispiel von lueckie hilft mir sehr, so hatte ich das ca auch vor, habs nur mit ner while schleife versucht
|
Re: procedure waten lassen
"Die armen Anwender"
Was ist an Sleep so schlecht? |
Re: procedure waten lassen
Moin Neolithos,
Zitat:
Wendet man also Sleep im Hauptprogramm an, wirkt es so, als hätte sich das Programm aufgehängt. |
Re: procedure waten lassen
Delphi-Quellcode:
procedure Wait(time: word);
var Start: Integer; begin Start:=GetTickCount; while GetTickCount-Start <= time do application.ProcessMessages; end; |
Re: procedure waten lassen
Stand aber nicht in der Frage!
Desweiteren ist das schlecht für die anderen Prozesse im System... Ich würde die ganze Sache so formulieren...
Delphi-Quellcode:
..., wenn es nicht exakt sein soll!
procedure Wait(time: word);
var Start: Integer; begin Start:=GetTickCount; while GetTickCount-Start <= time do begin application.ProcessMessages; Sleep(0); // Terminiere Zeitscheibe bzw. Sleep(1); um Prozessor zu entlasten end; end; Ganz ideal wäre ein System-Timer via MsgWaitForMultipleObjects (was hunderstel genau funktioniert). Falls interesse besteht -> muss ich mir den Code noch ausdenken |
Re: procedure waten lassen
hallo,
ich habe lueckie's beispiel benutzt:
Delphi-Quellcode:
jetzt gibts ein problem und zwar sorgt das "appliaction.processmessages dafür das andere sachen verarbeitet werden können...ein beispiel ist dieses hier:
procedure delay(msec:longint);
var start,stop:longint; begin start := gettickcount; repeat stop := gettickcount; application.processmessages; until (stop - start ) >= msec; end; Zitat:
wenn die frage aufgelöst wird tritt die pause ein, die 5 sekunden dauert bis zur nächsten frage. Wenn ich während diesen 5 sekunden das ergebnis (das ja schon aufgelöst wurde) eingebe, krieg ich es als richtige antwort angezeigt.... wie kann ich das nun angehen? mein prog soll die anderen prozeduren währen der pause nicht weiter verarbeiten...dennoch soll es aber ach nicht "abstürzen"...was kann man da machen? btw: die procedure die die antworten prüft ist eine andere als die, in der die pause aufgerufen wird, diese sollte nicht verarbeitet werden |
Re: procedure waten lassen
Disable die Frage doch!
ctrl.Enabled := false |
Re: procedure waten lassen
JaJa Prozeduren koennen nicht schwimmen. Fuehr sie also nicht in zu tiefes Wasser ;-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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