【问题标题】:How to print to C++Builder output window如何打印到 C++Builder 输出窗口
【发布时间】:2012-03-12 20:25:11
【问题描述】:

我有一个 C++Builder 2010 项目并想向它添加测试。因此,我不想暂停控制台窗口的输出来读取测试结果,而是想将相同的信息打印到 C++Builder 中的输出窗口(而不是在事件日志中)。

所以 OutputDebugString 对我来说不是一个选项。是否有一些特定的方法可以将控制台输出重定向到输出窗口或直接在那里打印?

【问题讨论】:

  • printf 在控制台窗口中打印,而不是在 IDE 输出窗口中
  • 我相信在 C++ Builder 附带的示例代码中有一个你想要做什么的例子。至少在我 7 多年前使用它时有一个可用。
  • 如果我没记错的话,输出是TVirtualStringTree,所以理论上应该可以发送消息添加新的“行”
  • 这个应该有一个类/函数,因为C++Builder有一个扩展的Tool API,但是我目前找不到
  • 你需要IOTAMessageServices::AddCompilerMessage

标签: delphi debugging ide c++builder c++builder-2010


【解决方案1】:

您可以简单地在项目选项中定义一个构建后事件来运行您的可执行文件。它的控制台输出将自动包含在输出消息中。

【讨论】:

  • 好吧,这样就可以了,但您似乎不太可能真的想在每次构建程序时都运行它。
  • 不幸的是,情况并非如此,至少对于 C++Builder 2010。
  • @riot_starter:我刚刚在 C++Builder 2010 中对其进行了测试。它按预期工作。
  • @riot_starter 你要做的就是让你的程序将输出写入标准输出。然后将其重定向到编译器输出窗口。
【解决方案2】:

那个窗口是编译过程的输出。这不是你要找的。您想在程序运行时生成输出。我会使用控制台或 OutputDebugString 或类似的,我不明白你对这些选项有什么看法。

【讨论】:

  • 欢迎来到 Stack Overflow!如果您对问题的含义有任何疑问,请不要急于回答,而是在评论中要求澄清。感谢您的理解:-)
  • @user539484 哦,我误解了这个问题。我做错了什么。我认为问题是如何在程序运行时写入编译器输出窗口。这样理解有错吗?
  • 这只是为了方便。因为我只想要单元测试的结果,所以我更喜欢在输出窗口中使用它们(这样我就可以在同一个窗口中看到与构建相关的所有内容,而不是在两个单独的窗口中)。
  • 一旦您的测试运行时间超过几秒钟,您就会讨厌 TOndrej 的答案。然后,您只需进行快速编译以检查您的最新代码是否已构建,并且必须等待它们运行。
  • 这应该不是问题,因为我已经将我的项目分成了两个可执行文件(真实的和测试的),所以我可以根据我的需要将它们分开编译或一起编译。在这种情况下,只有在我编译它们时才会运行测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多