На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Программирование » Delphi и Pascal

Как заставить программы Turbo Pascal 7.0 работать на быстрых компьютерах

Как показали отклики по поводу первой статьи из серии о Turbo Pascal, данная тема действительно ничуть себя не изжила.

Первая благодарность - тем, кто написал мне лично и в редакцию, тем более, что письма были написаны действительно со знанием темы. О присланных программах на Паскале я скоро расскажу в отдельной статье, а сегодня обсудим программу CrtDebug, которая позволяет программам, откомпилированным на TP 7.0, работать на быстрых компьютерах.

Программу CrtDebug прислал мне читатель СофтТерры Василий Ханефт, скачать ее можно здесь, а e-mail ее автора Валерьяна Ивашенко из Минска - iVA99@xoommail.com.

CRTDebug предназначена для корректировки exe-файлов, созданных с помощью Borland Pascal 7.0. При исполнении на быстрых процессорах из-за некорректного кода CRT модуля происходит ошибка: 200 Division by zero.

Модуль CRT содержит такие подчас необходимые функции, как управление выводом на дисплей, позиционирование курсора, работа с цветом текста, подача звуковых сигналов, использование таймера. Многие программы при переносе на быстрые ПК выдают ошибку 200 Division by zero и оставляют пользователя в недоумении.

Ранее я советовал использовать Turbo Pascal 6.0, эта версия не дает подобной ошибки. Но с ней неудобно работать из-под Windows: под Windows 98 Turbo Pascal 6.0 не может работать совместно с другими программами, компьютер целиком переводится в режим эмуляции MS-DOS.

После появления у меня программы CrtDebug, Turbo (Borland) Pascal 7.0 действительно заработал. Плюсом этого компилятора является не только возможность не мешать многозадачности Windows, но и более продуманный интерфейс с большим количеством установок, "раскраской" операторов и возможностью компилировать программы для работы в защищенном режиме. Также Borland Pascal 7.0 способен компилировать программы под Windows и имеет ряд функций, не включенных в шестую версию. Но в настоящее время для программирования под Windows используются, как правило, другие программы, поэтому для нас основные положительные стороны Borland Pascal 7.0 - "раскраска" операторов и работа в многозадачных ОС.

Пользоваться программой CrtDebug очень просто. Чтобы восстановить работоспособность программ, откомпилированных в Borland Pascal 7.0, необходимо запустить CRTDebug:

CRTDebug filename.ext <число>

Здесь filename.ext - имя файла, который вы хотите исправить, а <число> - параметр, значением которого может быть любое целое число в диапазоне от 55 до 65535.

Желательно, чтобы исправляемый файл не был упакован упаковщиками exe-файлов - в противном случае файл скорее всего не будет исправлен.

Главное же - исправить файлы turbo.tpl и tpp.tpl. Для этого выполните:

CRTDebug turbo.tpl <число>
CRTDebug tpp.tpl <число>

После этого вы сможете использовать ваш BP 7.0 при компиляции программ на машине с быстрым процессором.

Параметр <число> является необязательным, лично я его не указывал и получил вполне удовлетворительный результат. Если вы не находите файла tpp.tpl, не переживайте:я его тоже не нашел, однако все работает нормально:).

В качестве примечания автор CrtDebug предостерегает: если в ваших файлах используется паскалевская процедура CRT.Delay, то нет гарантии, что программа будет работать корректно. В этом случае попробуйте поизменять значение параметра <число>. Если это не поможет, то файл можно вернуть в исходное состояние таким образом:

CRTDebug filename.ext 55

Если же вы скорректировали BP-библиотеки turbo.tpl и tpp.tpl и не использовали при этом числовой параметр, то в процедуру Delay необходимо подставлять значение в десятитысячных долях секунды. От себя добавлю, что значение Delay изначально указывалось в миллисекундах, то есть тысячных долях секунды.

Напоследок для интересующихся объясню, почему, собственно, в модуле crt возникает такая загадочная ошибка. Как известно, процедура delay является частью модуля и используется как простейший ничего не делающий цикл, позволяющий задержать выполнение программы. Процедура delay инициализируется, даже если она и не применяется в программе.

При инициализации модуля crt программа выясняет, сколько итераций пустого цикла необходимо осуществить, чтобы остановить программу на 55 миллисекунд. Полученный результат записывается в 16-битную переменную. На быстрых ПК это число оказывается более 65535, и ячейка переполняется, вызывая ошибку, которую Borland Pascal определяет как 200 Division by zero ("Деление на ноль").

Более подробную информацию на английском и другой вариант патча вы найдете на сайте немецкого товарища Клауса Хартнегга. Кстати, там предлагается несколько различных вариантов решения данной проблемы. Также рекомендую FAQ по Паскалю (на русском).

Михаил Проломов
Софтерра

Другие разделы
C, C++
Java
PHP
VBasic, VBS
Delphi и Pascal
Новое в разделе
Базы данных
Общие вопросы
Теория программирования и алгоритмы
JavaScript и DHTML
Perl
Python
Active Server Pages
Программирование под Windows
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100