PROGRAM exampl_1;
BEGIN
writeln('DoDo');
END.
компилирую в My_first.exe
открываю а он вылетает сразу же.
Баналная проблема
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Код: Выделить всё
PROGRAM exampl_1;
BEGIN
writeln('DoDo');
readln;
END.
Даже самый дурацкий замысел можно воплотить мастерски
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Или readkey 

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
С readkey проблема.
Как только будет добавлен в uses модуль Crt (а readkey находится именно там), то программа начнет вылетать с ошибкой "Деление на 0" на быстрых машинах. Дело в том, что в разделе инициализации в модуле Crt присутствует вычисление размера счетчика для пустого цикла (для выполнения оператора Delay). Там за 1 тик таймера накапливается значение в делителе, на который делится некая коонстанта. На быстрых машинах за 1 тик таймера этот делитель переполняется.
Как только будет добавлен в uses модуль Crt (а readkey находится именно там), то программа начнет вылетать с ошибкой "Деление на 0" на быстрых машинах. Дело в том, что в разделе инициализации в модуле Crt присутствует вычисление размера счетчика для пустого цикла (для выполнения оператора Delay). Там за 1 тик таймера накапливается значение в делителе, на который делится некая коонстанта. На быстрых машинах за 1 тик таймера этот делитель переполняется.
Crt модуль можно выправить, заменив пару строчек кода на NOP.
Заменять надо в строке B9 37 00 F7 F1 последние два байта на 90 90
Также лечутся и готовые программы под DOS, где вылет с ошибкой 200 сплошь и рядом.
Заменять надо в строке B9 37 00 F7 F1 последние два байта на 90 90
Также лечутся и готовые программы под DOS, где вылет с ошибкой 200 сплошь и рядом.