FreePascal CRT单元可防止输出重定向

时间:2016-03-18 12:19:38

标签: redirect console lazarus freepascal crt

我对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()并设置光标的位置会很棒。

祝你好运

亚历

1 个答案:

答案 0 :(得分:0)

显而易见的解决方案是不导入Crt,因为Crt的整个点不是线性文本输出(光标定位)。

经典地,可以使用

停用crt
assign(output,'');
rewrite(output);

您可以尝试将该代码链接到某个命令行参数,以使输出适合管道。但为了使它看起来很清楚,最好还使用不同的(非彩色,非游标定位)输出代码。