Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

Как сделать задержку выполнения программы на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.029 c
1-16416
Пубертанец
2004-01-22 15:08
2004.02.06
Слияние меню


14-16656
Magician
2004-01-17 16:41
2004.02.06
Как закачать файл с интернета используя несколько потоков.


1-16510
Serge
2004-01-27 09:46
2004.02.06
SelAttributes - где что находится ???


3-16039
Alexey K
2004-01-08 15:17
2004.02.06
HELP Проблема при многопользовательском доступе


14-16701
ИМХО
2004-01-17 06:09
2004.02.06
HEX редактор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский