Завершите зависание программы и вернитесь к Turbo Pascal 3 - PullRequest
5 голосов
/ 21 апреля 2010

Я использую Turbo Pascal 3.01A на CP / M 2.2. Предположим, что моя программа на Паскале, которую я запускаю, используя опцию меню R в Турбо Паскале, имеет ошибку и входит в бесконечный цикл. Существует ли специальный управляющий символ, который прерывает мою программу и возвращает в меню Turbo Pascal?

Ответы [ 2 ]

6 голосов
/ 02 октября 2010

Директива {U +} заставит скомпилированный код проверять после каждого оператора, нажата ли клавиша. Если это так, нажатие клавиши будет проверено на ^ C; если нет ^ C, нажатие клавиши будет отменено. Хотя это полезно для отмены программы, она замедляет работу, а также довольно досадно убивает возможность опережающего ввода. К сожалению, CP / M не предоставляет каких-либо клавиатурных прерываний (хотя некоторые реализации CP / M могли бы их предоставлять), поэтому лучшей альтернативы нет. Было бы неплохо, если бы в Turbo Pascal была возможность реализовать собственную буферизацию клавиатуры, но я не знаю ни одной.

4 голосов
/ 22 августа 2010

В начале вашей программы Turbo Pascal 3 (под оператором Program) указана директива компилятора {$U+}. Это должно позволить вам сделать CTRL + C . Всегда используйте это только во время отладки вашей программы, поскольку это замедляет скорость выполнения вашей программы. Если все работает нормально, удалите его и затем скомпилируйте вашу программу.

Обычно в Turbo Pascal 3 компилятор имеет набор директив компилятора по умолчанию. U-User Interrupt обычно отключен по умолчанию.

Еще одна вещь, которую я обнаружил в своей программе Turbo Pascal совсем недавно, заключалась в том, что я использовал ее во время отладки своей программы, и по какой-то причине она не работала. Не уверен, что там происходит и обнаружил, что мне действительно нужно было удерживать эту комбинацию, чтобы заставить программу выйти. Не уверены, что это как-то связано со скоростью выполнения программы или если это было использование вложенного цикла, который привел к этому.

...