如何在C++应用程序中支持输出分页

how to support output paging in C++ application

本文关键字:支持 输出 分页 应用程序 C++      更新时间:2023-10-16

我们的应用程序可以交互方式生成一些相当长的报告文件。我们使用C++生成所有输出,但通过 TCL 控制台和 TCL 通道重定向,以便我们可以利用输出日志记录等。

是否有任何常用方法可以在C++中支持输出分页。我已经四处投掷,但什么也找不到。

最好

山 姆

好的,所以情况是你正在写信给一个Tcl解释器也在写信的Tcl_Channel。这应该行得通。将分页放在其上的最简单方法是使该频道成为标准频道之一(我会选择stdout),并通过 moreless 等寻呼机程序提供全部内容。这只需要几秒钟就可以开始工作。

否则,可以只使用 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++代码,则该通道将正常工作。(如果你愿意,你可以检查源代码,看看它是如何完成的;代码很短。