IPB
ЛогинПароль:

> Внимание! Действует предмодерация

Подраздел FAQ (ЧАВО, ЧАстые ВОпросы) предназначен для размещения готовых рабочих программ, реализаций алгоритмов. Это нечто вроде справочника, он наполнялся в течение 2000х годов. Ваши вопросы, особенно просьбы решить задачу, не пройдут предмодерацию. Те, кто наполнял раздел, уже не заходят на форум, а с теми, кто на форуме сейчас, лучше начинать общение в других разделах. В частности, решение задач — здесь.

 
 Ответить  Открыть новую тему 
> Error 200. Crt & Delay
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


  • Задержка, генерируемая Delay
    В сети Интернет популярен неполноценный патч (см. ниже). Задержки, которые задаются процедурой Delay(), с этим патчем на разных машинах разные.
    Вот другая процедура:


    procedure Stop(Wait:LongInt); assembler;
    asm
    mov ah, 86h
    mov dx, word ptr Wait
    mov cx, word ptr Wait+2
    int 15h
    end;

  • Error 200
    Программы, написанные на паскале (старые), вылетают с ошибкой "Runtime Error 200 (Division by zero)" / "Ошибка 200 (Деление на ноль)" на быстрых машинах типа PII-300.

    Если в программе используется модуль CRT, то программа виснет при запуске из-за инициализации, которая потом используется процедурой Delay().
    Инициализация происходит в любом случае - даже если эта процедура не используется в программе.
    При написании своих программ используйте пропатченый CRT. (можно скачать с сайта)
  • Исправление уже написанных программ.
    Чтобы заработала уже скомпилированная программа (чужая), возьмите hex-редактор (например, в School Pak есть HIEW) и:

    Ищем: B93700F7F1
    Меняем на: 6E (увеличение в 2 раза)
    или на: 9090 (убрать деление вообще)

    Программа _не_ должна быть запакована EXE-паковщиками.
  • Исправление CRT самостоятельно.
    Для того, чтобы самому пропатчить CRT сделайте следующее.
    В файле 'crt.asm', расположенном в каталоге 'BP\RTL\CRT', найдите строчки
    NOT DX
    MOV CX, 55
    DIV CX

    (они располагаются на строках 104-106).
    Замените во второй строке значение '55' на что-то большее - например на '110' или '550'.
    Либо можете удалить/закомментировать/заменить команду третьей строки на команду(ы) NOP. Затем, следуя инструкциям файла 'readme' из 'BP\RTL', создайте с помощью 'makefile', расположенного в том же каталоге, файлы 'TURBO.TPL' (для 'real mode') и 'TPP.TPL' (для 'protected mode').
    Замените ими соответствующие файлы в каталоге 'BP\BIN'.
    Патчить аналогичный модуль 'TPW.TPL' для Windows не обязательно, т.к. он не содержит такой ошибки.

Скачать сразу весь TURBO.TPL с патчем: TURBO.TPL (время задержки правильное)

Скачать установщик Turbo Pascal со всеми полезными патчами: Скачать Turbo Pascal School Pak

Скачать пропатченный (с неправильным временем задержки) модуль CRT (для разных версий Паскаля) с инструкцией по установке:
Прикрепленный файл  crt.zip ( 29.68 килобайт ) Кол-во скачиваний: 1345
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 19.01.2017 9:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"