Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2015, 10:10   #1
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию Delphi 7 TTreeView: Invalid level (n) for item "xxx"

Здравствуйте.
Делаю поиск файлов по диску с добавлением в TTreeView. То есть, создаю полный список файлов и папок в виде дерева, затем сохраняю список treeview.SaveToFile().
Проблема: при загрузке некоторых списков, возникает ошибка: Invalid level (9) for item "_Last (Return)_.qrf" и список перестаёт загружаться.
Что это значит?
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.07.2015, 10:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Насколько я помню, это значит, что у элемента в начале строки в файле стоит количество TAB символов, которое больше, чем у его родителя, стоящего выше.
Файл надо смотреть, так не скажешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2015, 10:55   #3
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Файл надо смотреть, так не скажешь.
файл списка?
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.07.2015, 11:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну тот что сохраняется из древа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2015, 11:25   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ой, не надо хранить древовидную иерархию как простой текст. в случае ахтунга концов не найдёшь. Имхо, вот так будет гораздо более, чем менее по-другому.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.07.2015, 11:40   #6
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну тот что сохраняется из древа.
Из-за чего вообще эта ошибка возникает? Ведь в TreeView при поиске всё норм добавляется.
Цитата:
Сообщение от min@y™ Посмотреть сообщение
ой, не надо хранить древовидную иерархию как простой текст. в случае ахтунга концов не найдёшь. Имхо, вот так будет гораздо более, чем менее по-другому.
так типа надёжнее?
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.07.2015, 11:47   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
так типа надёжнее?
да. и проще. и безболезненная обратная совместимость, плюшки в виде атрибутов и возможность просматривать/редактировать в визуальных редакторах (их тыщи!).

Пробуй.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.07.2015, 11:55   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Из-за чего вообще эта ошибка возникает?
Я же сказал выше: может быть из-за нехватки в определенной строке символов табцляции. Насколько я помню, Тривьюха формирует в файле иерархию в стиле Питона - каждый узел в подузле определяется количеством знаков табуляции.
Т.е. у главного узла нет таба. У его детей - 1 таб, у его внуков уже два таба впереди строки. Вот возможно где-то какой-то табчик потерялся.
Так и визуально видна структура дерева. Но это было придумано не для того, чтоб действительно хранить данные )
Это скорее отладочная фичка Борланда, чем перспективная.

А вот насчет XML я с Минаем согласен. Так реально надежнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2015, 14:47   #9
BLACK_RAIN
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 867
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
Пробуй.
А чё он на пробелы и двоеточия в строчках ругается?

Код:
Procedure TTreeToXML.WriteNode(N: TTreeNode; ParentXN: IXMLNode);
var
  CurrNode: IXMLNode;
  Child: TTreeNode;
begin
  CurrNode := ParentXN.AddChild(N.Text);
  CurrNode.Attributes['NodeLevel'] := N.Level; <<здесь дебаггер встаёт
  CurrNode.Attributes['Index'] := N.Index;
  Child := N.getFirstChild;
  while Assigned(Child) do
  begin
    WriteNode(Child, CurrNode);
    Child := Child.getNextSibling;
  end;
end;
BLACK_RAIN вне форума Ответить с цитированием
Старый 04.07.2015, 15:24   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Боги мои, а зачем так? XML это текстовый файл, вот в виде текста его и формируй.
Код:
Procedure TTreeToXML.WriteNode(N: TTreeNode; st:TStringList);
var
  Child: TTreeNode;i:integer;
begin
 st.Append('<node name="'+N.Caption'">)
  for i:=0 to n.Count-1 do 
   WriteNode(n[i],st);
 st.Append('</node>)
end;
Все. А потом st сохраняй.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Rad Studio XE2. The name "C:\" contains an invalid character ":" AleksKr C++ Builder 4 05.12.2012 15:17
Ошибка "Invalid floating point operation" в программе на Delphi Matrix6993 Помощь студентам 1 24.05.2012 23:36
Ошибка "Invalid Enum Value" TAdoConnection с базой VFP Аватар БД в Delphi 1 07.12.2010 17:54
"Ручное" добавление в TTreeView Johnson Общие вопросы Delphi 2 23.10.2008 11:17