Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
ВнизГлюк TreeView? Найти похожие ветки
← →
Profi © (2005-08-28 17:59) [0]Есть у меня заполненный treeview. Некоторым Item.data присвоены ссылки на строковые списки. В цикле я обращаюсь к каждому Item"у и если у него data<>nil присваиваю строки TStringList. Потом StringList очищаю. Иногда происходит повторное обращение к некоторым Item"ом. Data<>nil, но StringList ничего не присваивается.
Кто знает, в чем дело подскажите. Заранее спасибо!
← →
TUser © (2005-08-28 18:02) [1]Код покажи.
← →
begin...end © (2005-08-28 18:03) [2]Покажите, как присваиваются ссылки на списки, и как потом производится обращение к ним через свойство Data.
← →
Profi © (2005-08-28 18:03) [3]TUser © (28.08.05 18:02) [1]
Repeat
inc(i);
Sp:=TStringList.Create;
if TreeView.Items[i].data<>nil then
Sp:=TreeView.items[i].data
else begin
if TreeView.Items[i].getFirstChild=nil then begin
If TreeView.Items[i].Parent.getFirstChild=TreeView.Items[i] then Begin
TreeView.Items[i].Delete;
i:=i-2;
end else begin
TreeView.Items[i].Delete;
i:=i-1;
end;
end;
Continue;
end;
est:=false;
if Sp.Count<0 then continue;
For j:=0 to Sp.Count-1 do
if pos(FileName,Sp.Strings[j])>0 then begin
est:=true;
Break;
end;
if not est then begin
if TreeView.Items[i].getFirstChild=nil then begin
If TreeView.Items[i].Parent.getFirstChild=TreeView.Items[i] then Begin
TreeView.Items[i].Delete;
i:=i-2;
end else begin
TreeView.Items[i].Delete;
i:=i-1;
end;
end else
TreeView.Items[i].Data:=nil;
end;
Sp.Free;
Until i>=TreeView.Items.Count-1;
Изврещен до безобразия. Я просто пытался исключить повторное чтение уже прочитанных Item"ов.
← →
Profi © (2005-08-28 18:31) [4]Код нужен для того, что бы удалять все Item"ы, в Data которых нет строки FileName. При этом надо сохранить древовидность. Когда находится Item, в котором есть FileName, он не удаляется. При удалении следующего Item"а цикл возвращается к предыдущему (из-за вложенности) и тогда-то и возникает AV при попытке
For i:=0 to SP.Count-1
Целый день бьюсь, может, просто глупую ошибку не вижу
← →
Digitman © (2005-08-29 09:15) [5]
> При этом надо сохранить древовидность
это как ?
← →
icWasya © (2005-08-29 09:25) [6]Смущает вот это
Sp:=TStringList.Create;// 1
if TreeView.Items[i].data<>nil then
Sp:=TreeView.items[i].data // 2 может быть утечка
а потом вот это
Sp.Free; // 3
поясни логику
← →
Profi © (2005-08-29 13:45) [7]Я уже все исправил. Спасибо за помощь.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c