如何将内容打印到C++Builder的输出窗口

8
我有一个C++Builder 2010项目,想要为它添加测试。因此,我不想暂停控制台窗口的输出以读取测试结果,而是想将相同的信息打印到C++Builder的输出窗口中(而不是事件日志中)。
所以,OutputDebugString对我来说不是一个选项。是否有一些特定的方法可以将控制台输出重定向到输出窗口,或者直接在那里打印?
C++Builder 2010的输出窗口如下图所示:C++ Builder 2010 output window

printf 在控制台窗口中打印,而不是在 IDE 输出窗口中。 - riot_starter
我相信在 C++ Builder 附带的示例代码中有你想要完成的示例。至少在我7年前使用它时还有一个可用的示例。 - JimR
1
如果我没记错的话,输出应该是一个 TVirtualStringTree,理论上你应该能够发送一条消息来添加一个新的“行”。 - user497849
应该有一个类/函数来处理这个问题,因为C++Builder有广泛的工具API,但我目前还没有找到它。 - riot_starter
1
您需要使用 IOTAMessageServices::AddCompilerMessage - OnTheFly
2个回答

4

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


好的,这样做可以解决问题,但是你似乎不太可能真的想每次构建程序时都运行它。 - David Heffernan
不幸的是,至少对于C++Builder 2010来说并非如此。 - riot_starter
@riot_starter:我刚在C++Builder 2010中测试了它。它按预期工作。 - Ondrej Kelle
1
@riot_starter 你需要做的是让你的程序将输出写入标准输出流(stdout),然后将其重定向到编译器输出窗口。 - David Heffernan

1

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


欢迎来到 Stack Overflow!如果您对问题的含义有任何疑问,请不要急于给出答案,而是在评论中请求澄清。感谢您的理解 :-) - OnTheFly
@user539484 哦,我误解了问题。我错在哪里了?我以为问题是如何在程序运行时写入编译器输出窗口。这种理解是错误的吗? - David Heffernan
这只是方便的问题。由于我只想要单元测试的结果,所以我更喜欢它们在输出窗口中显示(这样我就可以在同一个窗口中查看与构建相关的所有内容,而不是分成两个窗口)。 - riot_starter
@DavidHeffernan 你可以为特定的配置(例如TestConfig)定义后构建事件,然后根据需要在发布、调试和测试配置之间进行切换。 - Ondrej Kelle
@TOndrej 是的,你可以这样做。我只会在 .dpr 文件的末尾添加 {$IFOPT D+}Readln{$ENDIF},然后就完成了。不管怎样,各有所好。 - David Heffernan
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接