Главная страница
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.033 c
1-16305
SeS
2004-01-23 18:15
2004.02.06
Забор значений из файла


14-16605
Карелин Артем
2004-01-15 14:42
2004.02.06
Насколько надежны протоколы X,Y,Z - модем?


6-16561
Виталя
2003-12-02 16:59
2004.02.06
---|Ветка была без названия|---


7-16779
Borys
2003-11-21 16:16
2004.02.06
CreateFileMapping


1-16215
Митяй2
2004-01-26 17:57
2004.02.06
Открытия окна выбора иконки...