Страница 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
Хыиуду
А не проще получить текущее время, сохранить его и потом ничего не делать, пока текущее время не превысит сохраненное плюс время задержки?
Тему переименовал