我们的应用程序可以交互地生成一些相当长的报告文件。我们使用 C++ 生成所有输出,但通过 TCL 控制台和 TCL 通道重定向,因此我们可以利用输出日志记录等。
是否有任何常用方法来支持 C++ 中的输出分页。我四处寻找,但找不到任何东西。
最好的
山姆
我们的应用程序可以交互地生成一些相当长的报告文件。我们使用 C++ 生成所有输出,但通过 TCL 控制台和 TCL 通道重定向,因此我们可以利用输出日志记录等。
是否有任何常用方法来支持 C++ 中的输出分页。我四处寻找,但找不到任何东西。
最好的
山姆
好的,所以情况是你正在写Tcl_Channel
一个 Tcl 解释器也在写的。那应该行得通。在此之上放置寻呼的最简单方法是使该频道成为标准频道之一(我会选择)并通过诸如orstdout
之类的寻呼程序提供全部内容。只需几秒钟即可开始工作。more
less
否则,可以仅使用 Tcl 代码在 Tcl 8.5 中编写通道;这就是反射通道(这是 Tcl 8.6 文档,但它在 8.5 中的工作方式相同)。然而,用它来做寻呼机将是相当多的工作。通道使用字节而不是字符。也可以使用堆叠通道转换(仅限 8.6)来实现。
但是,如果将输出发送到 Tk 文本小部件是可以接受的(我知道这不正是您所要求的……)在 Tcllib 中已经有一个包用于它。
package require Tk
package require tcl::chan::textwindow
pack [text .t]
set channel [tcl::chan::textwindow .t]
puts $channel "This is a simple test."
如果您将它传递给您的 C++ 代码以使用,该(只写)通道将正常工作。(如果您愿意,可以检查源代码以了解它是如何完成的;代码很短。)