Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 707

/ вопрос открыт /

Здраствуйте!
Имеется текстовый файл с тегами вида:

<1>XXXXXXXXXXXXX
<2>YYYYYYYYYYYYYYY
<C>
<B>Автор:</B>Такой-то
<B>Год выпуска: </B> Сякой-то
Здесь приведён <B>какой либо</B> текст
</c>

Имеется TreeView и Memo.
Так вот, как обработать текст между тегами?
К примеру чтобы текст после тега <1> добавился как главная ветвь в TreeView, после <2> как подветвь, а текст между тегами <C></C> добавился в Memo, причём чтобы текст между <B></B> был жирным.

iPharaon Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: iPharaon (статус: 1-ый класс)
Вопрос отправлен: 18 июня 2008, 19:54
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Мережников Андрей

Здравствуйте, iPharaon!
Я думаю, что надо делать следующим образом: 1) объявляешь динамический массив для хранения текста, который должен выводиться в Rich (var arRich:array of string;) и массив уровней вложенности узлов (var Uzel:array of integer;)
затем открываешь файл, убираешь инфу из treeview (treeview1.Items.Clear;)
и начинаешь обрабатывать файл.
Читаешь строку - если в начале строки в <> стоит число, то: 1) увеличиваешь размер массивов на 1 (setlength(arRich,high(arRich)+2); 2) Находишь в массиве Uzel элемент меньший прочитанного числа - номер этого элемента будет номером узла, являющегося родителем для добавляемого используешь тогда treeview1.addchild(treeview1.items[номер эл-та массива],<название узла>) Если не находится в массиве элемента с меньшим значением, то используешь treeview1.add(nil,<имя узла>);
записываешь в массив Uzel значение уровня добавленного узла. Если встречается тэг <c> то читаешь из файла в элемент массива arRich[high(arRich)] до тех пор, пока не встретиться тэг </c>.
Примерно так. Спрашивай, если надо объяснить подробнее

Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 19 июня 2008, 05:40
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 19 июня 2008, 00:49; участников в обсуждении: 2.
iPharaon

iPharaon (статус: 1-ый класс), 18 июня 2008, 20:11 [#1]:

Немного не так написал... Надо чтобы при клике на определённый пункт TreeView, текст, который идёт после этого пункта между тегами <C></C> добавлялся в мемо.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 18 июня 2008, 21:17 [#2]:

Уточни еще несколько вопросов: 1)какой уровень вложенности допускается или он не ограничен?2)признаком окончания названия узла является конец строки в файле? 3)Информация в memo должна добавляться только по клику на узле? 4) Может ли быть такая ситуация:
<1>
<2>
<3>
<2>
<2>
<1>
<1>

Совет - вместо Memo лучше использовать RichEdit - проще с форматированием (в частности выделять часть текста жирным шрифтом)
iPharaon

iPharaon (статус: 1-ый класс), 19 июня 2008, 00:49 [#3]:

Отвечаю
1) Не ограничен
2) Да
3) Да
4) Да
Я и использую RichEdit, просто для простоты написал мемо, т.к. до форматирования пока далеко =)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:58
Выполнено за 0.02 сек.