Задержка на Pascal

gluik
Сообщения: 13
Зарегистрирован: 10 дек 2007, 14:23

помогите написать процедуру которaя делает задержку в секундах (минимум 0.01)
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

А чем Delay не устраивает?
Ни что так не ограничивает фантазию программиста, как компилятор...
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

DELAY неустраивает скорее всего отсутствием модуля CRT в USES'aх
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

C_O_D_E писал(а):DELAY неустраивает скорее всего отсутствием модуля CRT в USES'aх


Да вот в том то и вопрос - то ли человек не знает такой процедуры, то ли все задание в том и состоит, чтобы её написать.
Ни что так не ограничивает фантазию программиста, как компилятор...
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

MOTOCoder, мы забыли, что нужно еще высчитать задержку, и передать ее в качестве параметра.
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

C_O_D_E писал(а):MOTOCoder, мы забыли, что нужно еще высчитать задержку, и передать ее в качестве параметра.


В смысле перевести секунды в миллисекунды?
Врядли все так просто...
Ни что так не ограничивает фантазию программиста, как компилятор...
Medved
Сообщения: 256
Зарегистрирован: 14 фев 2008, 20:51
Контактная информация:

Процедура Delay вообще странно себя ведёт. На некоторых компах delay(100) это 0.1 с, на некоторых 1 с...
Ваши руки совершили идиотскую ошибку и будут оторваны!
[OK]
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Да, есть такое дело...
С современными компами Delay не дружит.

Да и вообще, эта задача попахивает работой с прерываниями...
Ни что так не ограничивает фантазию программиста, как компилятор...
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

тогда можно вот так (точности отсчёта времени НЕТ!! причём, чем меньше время паузы, тем больше погрешность!!!!!!! - за счёт вычислений в теле процедуры!):

Код: Выделить всё

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) )

Добавлено
пока писал, обсуждение вона куда уже дошло - до прерываний.. так, глядишь и до программирования таймера высокой точности дойти может ;-)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

А не проще получить текущее время, сохранить его и потом ничего не делать, пока текущее время не превысит сохраненное плюс время задержки?
Тему переименовал
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить