Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.14;
Скачать: CL | DM;

Вниз

Пауза в программе   Найти похожие ветки 

 
PCpuzik ©   (2002-11-05 14:47) [0]

Как сделать так чтобы моя программа не работала в течении некоторого времени, т.е. идут
--что-то там
--Пауза
--Продолжение
Т.е. аналог паскалевскому Delay?


 
Skier ©   (2002-11-05 14:48) [1]

>PCpuzik
Sleep(...) ?


 
KoluChi ©   (2002-11-05 15:02) [2]

Лови:

procedure TForm1.Delay(AInterval: Integer); {миллисекунды}
var
timer: tTimer;
begin
timer := TTimer.Create(nil);
with timer do
try
Interval := AInterval;
OnTimer := OnTimerTimer;
Enabled := true;
repeat
Application.ProcessMessages();
until not Enabled;
finally
free();
end;
end;
procedure TForm1.OnTimerTimer(Sender: tObject);
begin
if Sender.inheritsFrom(TTimer) then
(Sender as tTimer).Enabled := false;
end;


 
Дремучий ©   (2002-11-05 15:03) [3]

если аналог, то тогда

> Skier © (05.11.02 14:48)
> Sleep(...)



 
SaS13 ©   (2002-11-05 15:06) [4]

можно проще:
procedure Wait(nWait: integer);
var wTemp, Sec, SecNew: Word;
begin
DecodeTime(SysUtils.Time, wTemp, wTemp, Sec, wTemp);
repeat
DecodeTime(SysUtils.Time, wTemp, wTemp, SecNew, wTemp);
Application.ProcessMessages
until Abs(Integer(Sec - SecNew) ) >= nWait
end;


 
KoluChi ©   (2002-11-05 15:23) [5]

Согласен


 
KoluChi ©   (2002-11-05 15:27) [6]

procedure Wait(nWait: integer);
var wTemp, Hour, Minute, Sec, SecNew: Word;
begin
DecodeTime(SysUtils.Time, Hour, Minute, Sec, wTemp);
Sec := Sec + 60 * Minute + 3600 * Hour;
repeat
DecodeTime(SysUtils.Time, Hour, Minute, SecNew, wTemp);
SecNew := SecNew + 60 * Minute + 3600 * Hour;
Application.ProcessMessages
until Abs(Integer(Sec - SecNew) ) >= nWait
end;


 
KoluChi ©   (2002-11-05 15:28) [7]

Немножко подправил, а то как-то некорректно, например, если Sec = 59.


 
SaS13 ©   (2002-11-05 15:33) [8]

KoluChi © (05.11.02 15:28)
не было необходимости Wait больше минуты делать :)))


 
KoluChi ©   (2002-11-05 15:54) [9]

Да тут дело не в минуте, просто если начальное время 12.01.59, то
sec = 59, secnew никогда не будет больше 59 - пауза навечно.


 
Alex4444444444   (2002-11-05 15:56) [10]

Kak-to eto poganovato: delat" pustoj cycle v mnogopotochnoj srede. Dlya etogo i est" vsyakie Sleep, Timer, WaitForSingleObject, etc, chtoby programma, kotoroj ne nuzhen CPU, ego zrya ne zanimala.


 
Incognito ©   (2002-11-05 16:15) [11]


procedure Delay(ms : longint);
{$IFNDEF WIN32}
var
TheTime : LongInt;
{$ENDIF}
begin
{$IFDEF WIN32}
Sleep(ms);
{$ELSE}
TheTime := GetTickCount + ms;
while GetTickCount < TheTime do
Application.ProcessMessages;
{$ENDIF}
end;



 
TTCustomDelphiMaster ©   (2002-11-05 17:07) [12]

Incognito © (05.11.02 16:15)

Что за бред?


 
PCpuzik ©   (2002-11-05 17:38) [13]

Спасибо, Sleep хватило :-)



Страницы: 1 вся ветка

Текущий архив: 2002.11.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
7-46161
kofman
2002-09-10 20:38
2002.11.14
Как получить список запущенных приложений


3-45782
Hlor
2002-10-26 19:17
2002.11.14
Есть вопрос


6-46017
ElectHp
2002-09-15 12:03
2002.11.14
Потоки в NMHTTP!!!


1-45842
Shrek
2002-11-05 12:47
2002.11.14
Как в мемо переместить курсор в определённую строку?


8-46002
Извращенец
2002-07-26 22:29
2002.11.14
Привет. Текст Канвасом