Страница 1 из 2

delay в делфи

Добавлено: 10 янв 2007, 10:04
matroskin
есть ли какой нить аналог delay в делфи?

Re: delay в делфи

Добавлено: 10 янв 2007, 10:13
Хыиуду
matroskin писал(а):есть ли какой нить аналог delay в делфи?
Есть. sleep

А еще есть функция gettickcount, которая возвращает кол-во миллисекунд начиная с запуска программы. Поэтому можно делать что-то вроде:
time1:=gettickcount;
repeat
until gettickcount>=time1+1000;

А еще было что-то связанное с потоками - WaitForSingleObject или WaitForSingleEvent, не помню точно

Re: delay в делфи

Добавлено: 10 янв 2007, 11:10
Absurd
matroskin писал(а):есть ли какой нить аналог delay в делфи?
Компьютер должен работать, а не спать.

Re: delay в делфи

Добавлено: 10 янв 2007, 11:44
Duncon
Самое шикарное решение подождать выполнение события, а так как оно пустое, то ожидание будет длиться именно столько сколько указанно..

Код: Выделить всё

procedure TForm1.pause;
var
  h: THandle;
begin
  h := CreateEvent(nil, true, false, ' ');
  WaitForSingleObject(h, 10000);
  CloseHandle(h);
end;

Re: delay в делфи

Добавлено: 10 янв 2007, 11:55
Хыиуду
вот именно это я и имел в виду. С виду непонятно, зато изящно!

Re: delay в делфи

Добавлено: 10 янв 2007, 12:30
matroskin
:)
пасибо всем

Re: delay в делфи

Добавлено: 10 янв 2007, 21:26
Avokain
Так намного удобней

procedure Delay (Seconds: Real);
var
Later: TDateTime;
begin
Later:= Now + (Seconds / (24.0 * 60.0 * 60.0));
While Now < Later do Application.ProcessMessages;
end;

Re: delay в делфи

Добавлено: 12 янв 2007, 12:05
Игорь Акопян
божешь мой, а чем Sleep(ms) не угодил-то???

офф: вспомнилсо боянчег
Программистский шедевр на индусском форуме на тему "как узнать завтрашнюю дату" остался непревзойденным:

void get_tomorrow_date( struct timeval *date )
(
sleep( 86400 ); // 60 * 60 * 24
gettimeofday( date, 0 );
)

:)

Re: delay в делфи

Добавлено: 12 янв 2007, 13:07
Absurd
В GUI части проекта вообще нельзя использовать Sleep(). На сообщения нужно отвечать так быстро, как только возможно, поэтому надо истользовать WM_TIMER. В серверной части тоже неплохо бы задуматься, нельзя ли вместо Sleep() делать что - либо более полезное.

Re: delay в делфи

Добавлено: 12 янв 2007, 13:53
matroskin
а мне как раз попдошло sleep(1)
это для моего случая не критично :)