Delphi 如何取消分配CRT(输出)?

Delphi 如何取消分配CRT(输出)?,delphi,pascal,crt,turbo-pascal,Delphi,Pascal,Crt,Turbo Pascal,在TurboPascal程序中,我利用DOS处理的输出,并使用制表符控制字符在输出中形成列: const Tab = #09; ... Writeln(X, Tab, F(X)); 然而,当我试图通过ReadKey调用添加类似pause的功能并使用Crt模块时,处理的输出中断,上面所示的语句开始编写通用制表符,而不是在制表位处形成列 我发现,这种现象的根源是模块初始化时的AssignCrt(Output)调用,它重新定义了Writeln的工作方式-它不再使用DOS进行输出,而是使用视频BIOS

在TurboPascal程序中,我利用DOS处理的输出,并使用制表符控制字符在输出中形成列:

const Tab = #09;
...
Writeln(X, Tab, F(X));
然而,当我试图通过
ReadKey
调用添加类似
pause
的功能并使用
Crt
模块时,处理的输出中断,上面所示的语句开始编写通用制表符,而不是在制表位处形成列

我发现,这种现象的根源是模块初始化时的
AssignCrt(Output)
调用,它重新定义了
Writeln
的工作方式-它不再使用DOS进行输出,而是使用视频BIOS或直接视频内存访问(取决于
DirectVideo
值)


无论
AssignCrt
做什么,我如何反转呢?据我从文档中了解,Crt的
模块没有提供恢复正常输出的方法

Crt
textfile驱动程序不支持
turbo-pascal
中的
tab
字符。 要恢复标准
dos
驱动程序,请执行以下操作:

分配(输出“”);//恢复标准dos输出

您可以稍后通过以下方式恢复Crt驱动程序:

分配CRT(输出)