Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Вниззадержка Найти похожие ветки
← →
Noway © (2004-03-30 18:39) [0]Как в Дельфи по ставить задержку?
В Паскале можно было написать Delay(число).
← →
новичок_из_сыктывкара © (2004-03-30 18:41) [1]sleep (число);
← →
имя (2004-03-30 18:41) [2]Sleep(мсек)
← →
Dmyk (2004-03-30 20:18) [3]Только учитывай, что sleep тормозит ВСЮ программу, в том числе сообщения о перерисовке окна, что очень неприятно. Чтобы такого не было... Чисто теоретически можно пропробывать таймер + EnableWindow, но я не гарантирую, что оно будет работать. Правда, sleep можно использовать в тех же консольных программах...
← →
$tranger © (2004-03-30 20:23) [4]Посмотри в ЧаВо и в кладовке модуль CRT
← →
YurikGl © (2004-03-30 20:34) [5]Проще пользовать Timer
← →
TUser © (2004-03-30 21:03) [6]
> sleep тормозит ВСЮ программу
Это не совсем так - sleep тормозит весь поток, в котором он вызван.
← →
Dimaxx © (2004-03-30 22:27) [7]Чтобы не тормозить поток используйте SleepEx со вторым параметром True.
← →
Piter © (2004-03-30 23:19) [8]sleep по-моему говорит системе сколько времени поток не нуждается в выполнении... и не факт что ему передатут управление по истечении этого времени...
← →
Anatoly Podgoretsky © (2004-03-31 12:22) [9]sleep является наиболее близким аналогом, за исключением гарантий, но и отсутствие sleep точно также не дает этих гарантий, система многозадачная, в отличии от ДОС
← →
V-Isa © (2004-03-31 15:39) [10]Какой sleep?
Предлагаю такой вариант:
Function Pause(ms:Integer);
...
Begin
...
Получаем текущее время в переменную A;
Repeat
Получаем текущее время в переменную B;
Application.ProcessMessages;
Until B-A>=ms;
...
End;
← →
infom © (2004-03-31 15:48) [11]
Function Pause(ms:Integer);
var a:longint;
Begin
A:= GetTickCount;
Repeat
Application.ProcessMessages;
Until GetTickCount-A>=ms;
End;
← →
VMcL © (2004-03-31 15:59) [12]>>V-Isa © (31.03.04 15:39) [10]
>>infom © (31.03.04 15:48) [11]
Ну, допустим, передал я в ваши процедуры задержку в 50 миллисекунд. Где гарантии того, что Application.ProcessMessages не будет выполняться, скажем, 2 минуты?
См. [9].
← →
Amoeba © (2004-03-31 16:52) [13]Это из RxLib:
procedure Delay(MSecs: Longint);
var
FirstTickCount, Now: Longint;
begin
FirstTickCount := GetTickCount;
repeat
Application.ProcessMessages;
{ allowing access to other controls, etc. }
Now := GetTickCount;
until (Now - FirstTickCount >= MSecs) or (Now < FirstTickCount);
end;
← →
Amoeba © (2004-03-31 16:56) [14]
> Где гарантии того, что Application.ProcessMessages не будет
> выполняться, скажем, 2 минуты?
Не надо фантазировать.
← →
Anatoly Podgoretsky © (2004-03-31 17:11) [15]Amoeba © (31.03.04 16:56) [14]
А поставь плохой CD увидишь и синий экран.
← →
Ega23 © (2004-03-31 17:28) [16]2 Anatoly Podgoretsky
Кстати, вы не могли бы объяснить причину такой плохой реализации работы с CD? Уже давно задавался вопросом, но как-то не сподобился выяснить...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.034 c