Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Глюк 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
2-1125465410
DimonS
2005-08-31 09:16
2005.10.09
Нужна помощь по TQuery.


14-1126880071
rOOse
2005-09-16 18:14
2005.10.09
Часы


2-1125033635
syte_ser78
2005-08-26 09:20
2005.10.09
Как правильно рефрешить?


14-1126728661
syte_ser78
2005-09-15 00:11
2005.10.09
Стоит ли апгрейдится?


14-1126990328
WonderfulDay
2005-09-18 00:52
2005.10.09
За сколько времени можно выучить Дэлфи?