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

vfc*_*sts 1 freepascal lazarus

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

我注意到没有这些选项DebugLnWriteLn引发异常。有没有一种方法来创建一个控制台即使程序没有上述选项,并输出到它编译DebugLnWriteLn后来呢?

Avo*_*ägi 6

在 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.
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法在其他平台上为您提供帮助。尽管 linux 控制台中的 iirc 始终存在于程序中,即使不可见。所以它应该可以在没有额外代码的情况下工作。但是我无法测试这个自动取款机,所以请带上一粒盐。