В программе TurboPascal я воспользовался преимуществами обработанного вывода DOS и использовал управляющий символ Tab для формирования столбцов на выходе:
const Tab = #09;
...
Writeln(X, Tab, F(X));
Однако, когда я попытался добавить pause
-подобную функциональность через вызов ReadKey
и использовал модуль Crt
,Обработанный выводсломался, и оператор, проиллюстрированный выше, начал писать общий глиф Tab вместо формирования столбцов на табуляторах.
Как я выяснил, источником этого явления является вызов AssignCrt(Output)
при инициализации модуля, который переопределяет то, как работает Writeln
- он больше не использует DOS для вывода, а вместо этого либо видео BIOS, либо прямой доступ к видеопамяти (в зависимости от значения DirectVideo
.
Как мне повернуть вспятьвсе, что делает AssignCrt
? Насколько я знаю из документации, там модуль Crt
не предоставляет средств для восстановления нормального вывода.