我对FreePascal CRT单元有以下问题:一旦将单元添加到项目中(例如,使用WriteLn()写入“Hello World”的简单控制台应用程序),程序的输出将显示在Windows CMD,但无法重定向。
更详细,以下源代码
program project1;
{$mode objfpc}{$H+}
uses
Classes;
begin
WriteLn('TestOutput');
end.
将“TestOutput”打印到Windows命令行,并在Windows中运行bash。命令
project1.exe > test.txt
使用内容test.txt
创建文件TestOutput
。
将CRT单元添加到项目中(即uses Classes, CRT;
)后,字符串仍会打印到控制台,但不能重定向到文件或在控制台上下文中使用(文件和变量将为空)。
有没有人有这种行为的解决方案?
可能更糟糕,但是为了实用性,选择HighVideo()
并设置光标的位置会很棒。
祝你好运
亚历
答案 0 :(得分:0)
显而易见的解决方案是不导入Crt,因为Crt的整个点不是线性文本输出(光标定位)。
经典地,可以使用
停用crtassign(output,'');
rewrite(output);
您可以尝试将该代码链接到某个命令行参数,以使输出适合管道。但为了使它看起来很清楚,最好还使用不同的(非彩色,非游标定位)输出代码。