Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизВывод ресалтов поиска Найти похожие ветки
← →
Magic_STI (2005-01-11 20:28) [0]Вот столкнулся с проблемой. Есть файл с такой вот структурой:
[BZONE]
Type=Menu
Name=BZO
Title=Бла-Бла-Бла
All=2
[BZONE_BZO1]
Type=File
Content=Бла-Бла-Бла
Title=Бла-Бла-Бла
[BZONE_BZO2]
Type=Menu
Title=Бла-Бла-Бла
Name=Def
All=3
[BZONE_BZO2_DEF1]
type=Menu
....
....
....
И так до бесконечности. Так вот после поиска у меня есть массив записей типа
TSearch = record
section:string;
index:integer;
intitle:boolean;
end;
В Section записано имя секции INI-файла, если взять пример, приведенный выше, то например BZONE_BZO2_DEF1. Так вот нужно в Тривью построить дерево, в котором были бы все секции, которые являются родителями найденное например для секции BZONE_BZO2_DEF1 дерево будет выглядеть так:
BZONE
BZONE_BZO2
BZONE_BZO2_DEF1
Как это можно БЫСТРО реализовать? Я сделал, вроде работает, но настолько медленно, что я успеваю хорошо в кресле потянуться, пока оно добавит 50 элементов. Как можно сделать, чтобы побыстрее?
З.Ы. Я конечно немного непонятно выражаюсь, но надеюсь на ваше понимание %)
← →
begin...end © (2005-01-11 22:16) [1]> Magic_STI (11.01.05 20:28)
Я бы загрузил файл в StringList, и потом уже с ним работал.
Примерно так:var
I, L, Index: Integer;
S, Section: String;
ParentNode: TTreeNode;
begin
Section := {имя секции};
Section := "[" + Section + "]";
with TStringList.Create do
try
LoadFromFile("C:\MyFile.ini");
Index := IndexOf(Section);
if Index >= 0 then
begin
ParentNode := TreeView.Items.Add(NIL, "Дерево ini-файла");
for I := 0 to Index do
begin
S := Strings[I];
L := Length(S);
if L > 0 then
if (S[1] = "[") and (S[L] = "]") then
ParentNode := TreeView.Items.AddChild(ParentNode, S)
end
end
finally
Free
end
end.
А в том случае, если заданная секция (Section) гарантированно встречается в файле (а следовательно, и в StringList), то можно обойтись и без IndexOf, а просто сразу идти от начала списка, добавляя имена секций в TreeView, до тех пор, пока в списке не встретится Section.
P.S. Ни в коем разе не претендую на оптимальность.
← →
Palladin © (2005-01-11 22:19) [2]
> Как это можно БЫСТРО реализовать?
ОТКАЗАТЬСЯ от INI файлов.
← →
Magic_STI (2005-01-12 19:39) [3]Хм... зачем? Меня они вполне устраивают скоростью... Дело в том, что полнотекстовый поиск в TMemIniFile размером 1,6 мегов идет от силы секунды 3... а то и меньше... Но вот добавляет он результаты как черепаха... Может дело в Treeview?
← →
begin...end © (2005-01-12 19:42) [4]> [3] Magic_STI (12.01.05 19:39)
TTreeView.Items.[BeginUpdate, EndUpdate] ?
P.S. А [1] Вы пробовали?
← →
Magic_STI (2005-01-12 19:54) [5]куда ж без этого... и сортировку выключил...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c