Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2009, 09:29   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Ну вот здесь есть вариант с 32разрядным счётчиком:
спасибо. посмотрю.

Цитата:
Однако, я более, чем уверен, что если поделить количество миллисекунд на (1000 div 18), а затем тупо ждать, пока BIOS таймер не увеличится на эту величину
ну, приблизительно такой вариант я в обсуждении и предлагал.
вот только я его вставляю как отдельную процедуру вместо штатного Delay.
например, такой вариант:
Код:
function  IsPressDelay(HundSecond : longInt) : boolean;
var
  Ticks      : LongInt  absolute 0:$46c;
begin
  IsPressDelay := false;
  HundSecond:=round(HundSecond * 0.185) +Ticks;
  repeat  until KeyPressed  or (Ticks>HundSecond);
  if KeyPressed then begin
    IsPressDelay := true;
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.06.2009, 09:35   #12
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
Как сделать фиксированную задержку, вместо Delay()
Код:
Procedure Delay(x:longint);
var t:longint;
begin
t := MemL[Seg0040:$6c];
while MemL[Seg0040:$6c] < t+x do; {задержка на X тиков}
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 24.06.2009, 19:48   #13
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Да нет, коллега, всё хуже. Патчи установлены. Ошибки 200 при иницилазации CRT не возникает. А Delay не работает... Хотя корень проблемы действительно в одном - процедура, которая отсчитывает задержку на современных процессорах отрабатывает без задержки на всём диапазоне вводимых значений...
Позвольте с вами не согласиться. У меня delay работает, но не совсем правильно. Если ставить delay(50000) - это составляет примерно 0.5 секунды. Хотя способ конечноже плох: на разных компьютерах, скорость задержки разная.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 24.06.2009, 20:22   #14
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от Impuls1989 Посмотреть сообщение
У меня delay работает, но не совсем правильно. Если ставить delay(50000) - это составляет примерно 0.5 секунды.
Это и подразумевалось под "не работает". Скачайте другую пропатченную версию. Какую угодно, только не Клауса Хартнегга.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите!! ПЛЗ Merphi Microsoft Office Excel 6 19.06.2008 14:31
Протестите мою прогу !!! UnD)eaD)Snake Софт 9 26.07.2007 16:03