Страница 1 из 2
Задержка на Pascal
Добавлено: 29 апр 2008, 13:41
gluik
помогите написать процедуру которaя делает задержку в секундах (минимум 0.01)
Re: процедура на Pascal
Добавлено: 29 апр 2008, 15:24
MOTOCoder
А чем Delay не устраивает?
Re: процедура на Pascal
Добавлено: 29 апр 2008, 21:22
C_O_D_E
DELAY неустраивает скорее всего отсутствием модуля CRT в USES'aх
Re: процедура на Pascal
Добавлено: 29 апр 2008, 21:25
MOTOCoder
C_O_D_E писал(а):DELAY неустраивает скорее всего отсутствием модуля CRT в USES'aх
Да вот в том то и вопрос - то ли человек не знает такой процедуры, то ли все задание в том и состоит, чтобы её написать.
Re: процедура на Pascal
Добавлено: 29 апр 2008, 21:53
C_O_D_E
MOTOCoder, мы забыли, что нужно еще высчитать задержку, и передать ее в качестве параметра.
Re: процедура на Pascal
Добавлено: 29 апр 2008, 21:56
MOTOCoder
C_O_D_E писал(а):MOTOCoder, мы забыли, что нужно еще высчитать задержку, и передать ее в качестве параметра.
В смысле перевести секунды в миллисекунды?
Врядли все так просто...
Re: процедура на Pascal
Добавлено: 29 апр 2008, 22:01
Medved
Процедура Delay вообще странно себя ведёт. На некоторых компах delay(100) это 0.1 с, на некоторых 1 с...
Re: процедура на Pascal
Добавлено: 29 апр 2008, 22:04
MOTOCoder
Да, есть такое дело...
С современными компами Delay не дружит.
Да и вообще, эта задача попахивает работой с прерываниями...
Re: процедура на Pascal
Добавлено: 29 апр 2008, 22:23
Serge_Bliznykov
тогда можно вот так (точности отсчёта времени НЕТ!! причём, чем меньше время паузы, тем больше погрешность!!!!!!! - за счёт вычислений в теле процедуры!):
Код: Выделить всё
procedure MyDelay(HundSecond : longInt);
var
Ticks : LongInt absolute 0:$46c;
begin
HundSecond:=round(HundSecond * 0.185) +Ticks;
repeat until (Ticks>HundSecond);
end;
p.s. время задаётся в сотых секунды (т.е. 0.01 с ~= MyDelay(1) )
Добавлено
пока писал, обсуждение вона куда уже дошло - до прерываний.. так, глядишь и до программирования таймера высокой точности дойти может ;-)
Re: процедура на Pascal
Добавлено: 30 апр 2008, 11:19
Хыиуду
А не проще получить текущее время, сохранить его и потом ничего не делать, пока текущее время не превысит сохраненное плюс время задержки?
Тему переименовал