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

Вниз

Как сделать задержку выполнения программы на N милисекунд?   Найти похожие ветки 

 
HES ©   (2004-01-27 11:18) [0]

Есть функция sleep(N), но она работает криво, загружает процессор на 100%. А задача такова: я делаю игру видео-покер. Карты должны выводиться поочередно через 0.2 сек. Я пишу:

for i:=0 to 4 do
begin
Card[i].show;
sleep(200)
end;

И что я получаю? - Сначал "зависон" ровно на 5*200ms=1сек, а потом все карты появляются одновременно...
Может создать Timer с интервалом в 200ms, задать ему буфер адресов функций которые надо выполнить, и выпонять их по Timer1Timer? Но это слишком некрасиво. Может кто знает как сделать функцию например

function Pause(N_ms: integer):boolean

которая возвращает True по прошествии N ms, и во время своего выполнения не загружает процессор?


 
Darthman ©   (2004-01-27 11:31) [1]

А card - это, поди, компонент? Тогда card.repaint до ухода в спячку делай.


 
panov ©   (2004-01-27 12:03) [2]

for i:=0 to 4 do
begin
Card[i].show;
Application.ProcessMessages;
sleep(200)
end;


 
Oyster ©   (2004-01-27 12:41) [3]

Или так

for i:=0 to 4 do
begin
Card[i].show;
Form.RePaint;
sleep(200)
end;


 
Oyster ©   (2004-01-27 12:49) [4]

И, кстати, Sleep не загружает процессор на 100%, а ноаборот, освобождает его от приложения на время работы процедуры.


 
Digitman ©   (2004-01-27 14:19) [5]

var
CardId: Integer;

procedure TMyForm.MyTimerTimer(Sender: TObject);
begin
Card[CardId].Show;
inc(CardId);
with TTimer(Sender) do
begin
Enabled := CardId < 4;
if not Enabled then
begin
CardId := 0;
MyButton.Enabled := True;
end;
end;
end;

....

procedure TMyForm.MyButtonClick(Sender: TObject);
begin
...
MyTimer.Interval := 200;
MyTimer.Enabled := True;
MyButton.Enabled := False;
...
end;


 
Goorus   (2004-01-28 03:28) [6]

Я так делал ограничение fps:

var StartTime:Cardinal;
...
for i:=0 to 4 do
begin
Card[i].show;
StartTime:=GetTickCount;
while (GetTickCount-StartTime)<200 do
Application.ProcessMessages;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
3-16095
dalamar
2004-01-08 04:10
2004.02.06
SQL ADO connection и Access. Проблема вставки данных


7-16772
Донской
2003-11-17 19:27
2004.02.06
Ругается на (asm) Mov result,SE:


1-16506
DelphiNew
2004-01-27 12:43
2004.02.06
Количетво записей в файле


1-16267
DimonFalse
2004-01-23 18:05
2004.02.06
автоматизация Word2000


3-16124
asd
2004-01-15 16:04
2004.02.06
paradox