Delphi 如何取消分配CRT(输出)?
在TurboPascal程序中,我利用DOS处理的输出,并使用制表符控制字符在输出中形成列: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
const Tab = #09;
...
Writeln(X, Tab, F(X));
然而,当我试图通过ReadKey
调用添加类似pause
的功能并使用Crt
模块时,处理的输出中断,上面所示的语句开始编写通用制表符,而不是在制表位处形成列
我发现,这种现象的根源是模块初始化时的AssignCrt(Output)
调用,它重新定义了Writeln
的工作方式-它不再使用DOS进行输出,而是使用视频BIOS或直接视频内存访问(取决于DirectVideo
值)
无论
AssignCrt
做什么,我如何反转呢?据我从文档中了解,Crt的模块没有提供恢复正常输出的方法 Crttextfile驱动程序不支持turbo-pascal
中的tab
字符。
要恢复标准dos
驱动程序,请执行以下操作:
分配(输出“”);//恢复标准dos输出
您可以稍后通过以下方式恢复Crt驱动程序:
分配CRT(输出)