用Lazarus编写的Windows GUI程序是否可以创建一个控制台并在运行时写入它?

时间:2013-11-22 00:01:08

标签: freepascal lazarus

编写Lazarus程序时,您可以选择在项目选项中使用$APPTYPE console或取消选择Win32 GUI Application-WG选项。)

我注意到,如果没有这些选项,DebugLnWriteLn会引发异常。有没有办法创建一个控制台,即使程序没有编译上面提到的选项,然后用DebugLnWriteLn输出到它?

2 个答案:

答案 0 :(得分:4)

在Windows中,与Delphi相比,它有点棘手。在Delphi中,您需要做的就是致电AllocConsole。使用Lazarus / FreePascal你需要做一些额外的工作:

uses
  Windows;
begin
  AllocConsole;      // in Windows unit
  IsConsole := True; // in System unit
  SysInitStdIO;      // in System unit
  // Now you can do Writeln, DebugLn, ...
end.

不幸的是,我无法在其他平台上帮助你。虽然linux控制台中的iirc始终存在于程序中,即使不可见。所以它应该没有额外的代码。但是,我无法测试这个大气,所以请耐心等待。

答案 1 :(得分:2)

嗯,很明显,将项目设置为gui应用程序而不是程序更适合编程。所有需要的使用条款都是现在的。

所以这样的问题,获得拉撒路的力量,但作为控制台应用程序我解决添加     Application.ShowMainForm:=False;

Application.CreateForm(TForm1, Form1);

在.lpr文件中。

一切正常,甚至可以使用showmessage(一切)。