![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задержка времени [D5, Win95/98]
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]Почему можно через цикл сделать почти одно и тоже получится :))))