|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.02.2013, 03:55 | #1 |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
красивый интерфейс на псевдографике
Доброго времени суток.
Появилась потребность написать интерфейс в консоли, в ходе которой я столкнулся с некоторыми проблемами. Вот что я хочу сделать: символьная рамочка(задается 4-мя цифрами), а внутри нее выводятся разные данные, например что-нибудь такое вот: (не знаю почему рамочка поганится здесь, на форуме, вообще она прямоугольная Код:
1)если я подаю ему слишком длинные данные, он их обрезает. 2)данные нужно переодически обновлять (выборочно) теперь что есть: функция для рамочки) класс для "окошка", состоящий пока только из координат курсора в консоли(т.е. можно считать, вообще не реализован) класс для данных, которые нужно обновлять, тоже состоит из координат курсора для этих данных + функция обновления. чтобы было ясней: Код:
-как реализовать контроль длины вывода? ----знаю есть манипулятор width(), но он контролирует только в большую сторону ----можно ли как то положить сначала все в буфер а потом выводить ----только, скажем, 15 символов (имеются ввиду встроенные средства)? --------можно, конечно, завести char *buf какой-нибудь --------и в него все складировать, а затем выводить но, --------во-первых может это уже сделано в глубинах ostream?, --------а во-вторых: нужна конвертация из всех типов в char (числа тоже надо выводить, да и мало ли что еще...), --------и код будет похож непонятно на что, а хочется все-таки что бы он напоминал Код:
если вы считаете этот метод ужасным/тупиковым/бесперспективным предложите другой вариант реализации интерфейса (не графический конечно же) буду только рад это исключительно мое представление) |
12.02.2013, 08:04 | #2 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Как вариант - используйте вместо пробелов табуляцию. Если данные будут по длинне будут отличаться на пару символов, то все будет ок.
А так... перед выводом приводите все к строке и в зависимости от длинны строки добавляйте пробелы или обрезайте строку.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
12.02.2013, 09:55 | #3 | |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
Цитата:
|
|
12.02.2013, 10:21 | #4 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
через поток... не могу сказать, не пользовался ими для таких целей.
Я в таком случае писал себе функцию itoa (она в некоторых компиляторах бывает, но стандартом она не требуется, следовательно ее отсутствие - нормальное явление).
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
12.02.2013, 10:50 | #5 |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
ну тогда вопрос: можно ли положить в буфер данные, но не выводить их?
для входных данных буфер замечательно работает, а вот чтобы для выходных - ни разу не встречал... |
12.02.2013, 11:49 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Если не ошибаюсь, std::strstream это то, что вам надо
|
12.02.2013, 12:46 | #7 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Не понял идею.
Допустим у нас в консоль выводятся значения трёх счётчиков. Эти значения увеличиваются в реальном времени (пусть с разной скоростью). Окошко консоли обновляется. Код:
Код:
Делайте таблицу максимальной и фиксированной ширины, или увеличивайте ширину таблицы (опять же до определённого максимального значения). Проверяйте длину выходных данных, если данные не умещаются в таблицу, то выводите соответствующее сообщение об ошибке (и эти данные), например, на экран консоли под таблицей. Считаю, что обрезать выходные данные - неправильно. |
12.02.2013, 15:13 | #8 |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
таблица фиксированной ширины, расширять пока не собирался, но может и надумаю.
насчет обрезания: как лучше? так Код:
к тому же если строка обрезана, можно закончить ее многоточием, и тут уже не скажешь что данные не правильные насчет ошибок: по-моему не стоит акцентировать внимание пользователя на том, что у вас не влезла строка и кидать еррор, т.к. как таковая ошибка отсутствует, рассчеты будут проведены правильно, некорректен только вывод |
12.02.2013, 15:54 | #9 |
Пользователь
Регистрация: 24.12.2012
Сообщений: 82
|
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Пошаговый псевдо-3d шутер в псевдографике | #include <Markus> | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 49 | 20.06.2016 01:32 |
[С++] Cоздание таблиц в псевдографике | SadSad13 | Помощь студентам | 2 | 17.10.2011 03:54 |
Красивый интерфейс в Qt | savva-paladin | Qt и кроссплатформенное программирование С/С++ | 5 | 05.12.2010 09:11 |
Компоненты. Красивый интерфейс | GenniY | Компоненты Delphi | 3 | 13.10.2009 11:56 |
красивый интерфейс проги | jkpro | Общие вопросы Delphi | 4 | 04.10.2009 18:24 |