|
Вопрос # 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 (статус: 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 (статус: 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 (статус: 1-ый класс), 19 июня 2008, 00:49 [#3]:
Отвечаю
1) Не ограничен
2) Да
3) Да
4) Да
Я и использую RichEdit, просто для простоты написал мемо, т.к. до форматирования пока далеко =)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|