Как поддерживать вывод страницы в приложении C++
Наше приложение может генерировать довольно длинные файлы отчетов в интерактивном режиме. Мы используем C++ для генерации всего вывода, но перенаправляем через консоль TCL и канал TCL, чтобы мы могли использовать преимущества ведения журнала вывода и т. Д.
Есть ли какой-нибудь распространенный способ поддержки вывода страниц в C++. Я пролистал, но ничего не могу найти.
Лучший
Сэм
1 ответ
Итак, ситуация такова, что вы пишете Tcl_Channel
что интерпретатор Tcl также пишет. Это должно работать. Самый простой способ поместить пейджинг поверх этого - сделать этот канал одним из стандартных каналов (я бы выбрал stdout
) и накормить всю партию через пейджерную программу вроде more
или же less
, Это займет у вас всего несколько секунд, чтобы начать работать.
Иначе, можно написать канал в Tcl 8.5, используя только код Tcl; это и есть отраженный канал (это документация по 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++ для использования. (Вы можете проверить исходный код, чтобы увидеть, как это делается, если хотите; код довольно короткий.)