![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пауза в программе [D6, Win95/98, WinXP]
PCpuzik © (2002-11-05 14:47:00)Как сделать так чтобы моя программа не работала в течении некоторого времени, т.е. идут
--что-то там
--Пауза
--Продолжение
Т.е. аналог паскалевскому Delay?
PCpuzik (2002-11-05 17:38:00) [1]Спасибо, Sleep хватило :-)
TTCustomDelphiMaster (2002-11-05 17:07:00) [2]Incognito © (05.11.02 16:15)
Что за бред?
Incognito (2002-11-05 16:15:00) [3]
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;
Alex4444444444 (2002-11-05 15:56:00) [4]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.
KoluChi (2002-11-05 15:54:00) [5]Да тут дело не в минуте, просто если начальное время 12.01.59, то
sec = 59, secnew никогда не будет больше 59 - пауза навечно.
SaS13 (2002-11-05 15:33:00) [6]KoluChi © (05.11.02 15:28)
не было необходимости Wait больше минуты делать :)))
KoluChi (2002-11-05 15:28:00) [7]Немножко подправил, а то как-то некорректно, например, если Sec = 59.
KoluChi (2002-11-05 15:27:00) [8]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:23:00) [9]Согласен
SaS13 (2002-11-05 15:06:00) [10]можно проще:
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;
Дремучий (2002-11-05 15:03:00) [11]если аналог, то тогда
> Skier © (05.11.02 14:48)
> Sleep(...)
KoluChi (2002-11-05 15:02:00) [12]Лови:
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;
Skier (2002-11-05 14:48:00) [13]>PCpuzik
Sleep(...) ?