Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Задержка времени [D5, Win95/98]


Страницы:   1 2

BMax ©   (2002-03-16 07:12:00) 

Кто-нибудь может подсказать как сделать задержку времени, если на TP это была Dalay, то на Delphi ее нет.


Anatoly Podgoretsky   (2002-03-17 09:57:00) [1]

Заморочек с прочессорами нет, есть заморочки с типами, обычно не учитывают ограниченную разрядность, наглядный пример два выше приведенных примера с GetTickCount


Petrovich   (2002-03-17 09:06:00) [2]

Предлагаю по функции текущего времени обрабатывать.
Читаем текущее время
Задаем цикл с While tekVr1-TekVr<Znach do
и в цикле читаем текущее время сравнивая с начальным.
Тогда заморочек с разными процами быть не должно


Bmax   (2002-03-17 07:19:00) [3]

Я нашел вот что:
Аналог процедуры Delay в Delphi
procedure TForm1.Delay(msecs : Longint);
var
FirstTick : longint;
begin
FirstTick:=GetTickCount;
repeat
Application.ProcessMessages; {для того чтобы не "завесить" Windows}
until GetTickCount-FirstTick >= msecs;
end;


Donal_Graeme   (2002-03-17 04:46:00) [4]

хм.. а можно ли для целей задержки использовать
WaitForSingleObject?


kull   (2002-03-16 22:22:00) [5]

Да действительно...
Похоже я туплю забыл еше 60 минут в часе
звиняйте...


Anatoly Podgoretsky   (2002-03-16 22:15:00) [6]

Это ты переведи x/1000/86400


kull   (2002-03-16 22:10:00) [7]

Не понял? Какие 49 дней? Переведи...


Anatoly Podgoretsky   (2002-03-16 22:00:00) [8]

нет всего 49 дней, у меня недавно компьютер пошел уже на третий круг


kull   (2002-03-16 20:49:00) [9]

Теоретически наверное да.
4294957297 ms ~ 8 лет ...


Anatoly Podgoretsky   (2002-03-16 20:41:00) [10]

Не совсем зависания, а просто вместо 10 секунд цикл может растянуться до бесконечности, это когда счетчик близок к максимвльному значению в 2^32
например при значении в 4294957297 вышеприведенный цикл никогда не закончится, так как число 4294967297 невозможно представить.


kull   (2002-03-16 20:15:00) [11]


> Практика обычная и последствия обычные, зависание данного
> цикла.


А в каком месте, извините он зависает?


bad-md   (2002-03-16 19:39:00) [12]

-> All:

4 месяца здесь не был...

"Де жа вю...", чем закончили, с того и начали, обсуждалось же уже все 1XXXX раз, причем теми же словами, а если у BMax на TP это была - Dalay, то и под Delphi, соответственно - Slaap.

With best wishes


Anatoly Podgoretsky   (2002-03-16 19:28:00) [13]

а таймер то зачем


denis_s   (2002-03-16 19:08:00) [14]

поставь таимер на форму и пиши
sleep(200);


Anatoly Podgoretsky   (2002-03-16 16:59:00) [15]

Практика обычная и последствия обычные, зависание данного цикла.
Если пишешь на чистом API то у тебя должен быть цикл обработки сообщений, нужно вызывать PeekMessages, реализацию можешь посмотреть в модуле forms для Application.ProcessMessages,


Alex_LG   (2002-03-16 16:42:00) [16]

2 Anatoly Podgoretsky © :
по моему то, что предложил watcher - обычная практика? или нет? если нет - не могли бы предложить свой вариант? меня тоже интересует другой вопрос: чем можно заменить Application.ProcessMessages - пишу на API программку, БЕЗ unit Forms


Anatoly Podgoretsky   (2002-03-16 14:35:00) [17]

И потом удивляемся почему через 50 дней повисла виндоус


watcher   (2002-03-16 11:46:00) [18]

// делает то же что и Sleep() но окно обрабатывает сообщения
uses Windows;
......
var
lTime: cardinal;
begin
lTime := GetTickCount;
while GetTickCount - lTime < 10000 {10 sec} do
Application.ProcessMessages;
end;


Anatoly Podgoretsky   (2002-03-16 09:17:00) [19]

ХЕХЕХИХИХИ (16.03.02 09:13)
Ни одно и тоже, во первых разогрев процессора, во вторых не повторяемость на разных процессорах.

Bmax © (16.03.02 08:12)
а ты приведи строки USES с и строку вызовом, сказали же не Нострадамусы, ну ошиблись не много не Телепаты.

А если хочешь точный ответ, то ЕСТЬ


ХЕХЕХИХИХИ   (2002-03-16 09:13:00) [20]

Почему можно через цикл сделать почти одно и тоже получится :))))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо