![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
AccesViolation в XML [D7]
mfender © (2006-09-25 13:29:00)Здравия желаю!
Вот интересная история: процедура раскладывает ноды из XML в TTreeView. Самое примечательное, что эта процедура отлично работает, как метод в Form1. Но выкидывает AccessViolation, когда работает как метод TMyTreeView. Спотыкается вот на этом месте:
<DOMAIN>
<OID>55</OID>
Т.е., она споткнулась на первом же Integer'е в документе. Но почему же она нормально работает отдельно от TMyTreeView?
mfender (2006-09-25 14:12:00) [1]Что-то странное творится.
У меня вверху есть проверка:
if XMLNode.NodeName = NODE_DOMAIN then
begin
NodeText := IXMLDOMAINType(XMLNode).Title;
end;
IXMLDOMAINType- это интерфейс к этому XML-узлу.
А вот стоило написать
if XMLNode.NodeName = NODE_DOMAIN then
begin
showmessage(XMLNode.ChildValues['Title']);
NodeText := XMLNode.ChildValues['Title'];
end;
Всё стало работать... Странно всё это...
Reindeer Moss Eater (2006-09-25 13:46:00) [2]Значит нет самого XMLNode или еще чего.
В любом случае твоя ошибка - использование неактуального указателя на объект.
mfender (2006-09-25 13:42:00) [3]
> Reindeer Moss Eater © (25.09.06 13:34) [3]
> отладчик мама на работу унесла?
>
> Reindeer Moss Eater © (25.09.06 13:36) [4]
> Нету нода с индексом I вот и все дела.
Отладчик показывает, что всё там есть. Но у XMLNode.ChildNodes.Count значение в этом месте - AccessViolation...
Reindeer Moss Eater (2006-09-25 13:36:00) [4]Нету нода с индексом I вот и все дела.
Reindeer Moss Eater (2006-09-25 13:34:00) [5]отладчик мама на работу унесла?
mfender (2006-09-25 13:32:00) [6]Да, забыл ещё вот что. Она спотыкается вот на этом коде:
{Тут она рекурсивно сама себя вызывает}
DOM2Tree(XMLNode.ChildNodes.Nodes[I], NewTreeNode);
но нормально реагирует на
XMLNode.DOMNode.childNodes.length
Dmitrij_K (2006-09-25 13:31:00) [7]Тебе тоже не хварать.
> Но почему же она нормально работает отдельно от TMyTreeView?
Я думаю, что ошибка в программе.