Другие языки программирования и технологии

Красивый вывод информации в TurboPascal

Вообщем, у меня была задача написать программу на языке TurboPascal примерно следующего рода: Организовать динамическую структуру программы(динамические переменные), сделав возможность ввода, удаления, добавления информации в динамическую переменную(я ещё раз отмечу, что в динамическую, а не в статическую) и сделать красивый вывод информации на экран. Первые три задачи я сделал - в одну динамическую переменную у меня заносится строковая, численная информация, организуется связь динамических переменных и теперь осталась лишь одна, казалось бы, элементарная задача - сделать красивый вывод, но т.к. строковая часть переменной может быть чёрт знает какой длинны(хоть один символ или 50 символов, к примеру), то у меня проблема со "столбцовым" выводом информации(я хочу сделать "красивые" столбцы с выведенной информацией). Конечно же, это можно было бы сделать тупым просчётом максимальной длинны строковой части динамической переменной и "прибавления" к остальным строкам пробелов, но таким образом можно получить тупость - выводимая информация может выйти за рамки ширины экрана. Можно сделать подсчёт средней длинны строковой переменной и выводить информацию на несколько строк, но опять таки возникает вопрос:"а как мне потом вернуться на предыдущую строку, чтобы вывести остальные столбцы". Хотел организовать процесс вывода с помощью графического режима, но там можно задать только координаты верхнего левого угла(процедура OutTextXY), так что снова ничего не получиться. Подскажите пожалуйста, может в Паскале есть какие-нибудь спец.процедуры для красивого столбчатого вывода информации?
Им
Имя
886
Ничего подобного готового нет.
Тебе придется самому все рассчитывать и рекомендую из своего опыта это в отдельную процедуру вынести.
Во-первых надо сразу определиться с максимальной длиной текстовой строки - иначе у тебя на экране не поместится, что тогда?
Во-вторых выравнивать можно слева или справа.
Справа: Write(s:30) - так проще.
Слева удобнее вего так:
Write(s);
for i:=length(s)+1 to 30 do write(' ');
Разумеется, тебе придется в одной строке столбцы выводить по очереди - так ты не запутаешься с GoToXY - с ним труднее, поверь моему опыту.
А еще не стесняйся прислать код - так нам виднее будет, что тебе посоветовать.
Павел Семенов
Павел Семенов
7 165
Лучший ответ
Есть библиотека TurboVision, позволяющая создавать окна в текстовом режиме. Но особого смысла разбираться в ней я не вижу - этим уже (почти) никто не пользуется. Лучше будет самому написать.
"Динамическая переменная" это что-то вроде "самоездящего автомобиля" ? Статических переменных вообще не бывает. Вывод делается элементарно - форматируется строка вывода, никуда возвращатся не надо. Если хочешь ровных столбцов - находишь макс длину строковой части - форматируешь по ней. Если уезжает за экран - обрезаешь по длине и выводишь после таблицы.
Петр П
Петр П
18 743
Нет. Не встроено.
Более того, и графика что ты упомянул - не встроена. Она библиотечкой.
И, кстати, верхней левой координаты - вполне достаточно.
==
=Mazahaka =
13 013