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

Вниз

IXMLNode ошибка доступа при получении ChildNodes   Найти похожие ветки 

 
31512 ©   (2005-11-17 12:57) [0]

Здравствуйте.
Есть такой вот XML файл:

<?xml version="1.0" encoding="windows-1251" ?>
<LINKTABLE>
   <LINKS code="PARENT" objtype="MATERIAL_FOLDER" rs="RS1" field="ID_PARENT" />
   <LINKS code="FOLDERS" objtype="MATERIAL_FOLDER" rs="RS2" field="ID_CHILD" />
   <LINKS code="MATERIALS" objtype="MATERIAL" rs="RS3" field="ID_MATERIAL" />
   <LINKS code="_PROPERTIES_" objtype="MATERIAL_FOLDER_PROPERTY" rs="RS4" field="ID_SPROPERTY" >
<SAVE cn="CN1">
 <BEFORESAVE/>
 <INSERT/>
 <UPDATE/>
 <DELETE>DELETE FROM SMATERIALPROP WHERE ID_TMATERIAL={_OID_};</DELETE>
 <AFTERSAVE/>
</SAVE>
   </LINKS>
   <LINKS code="PROVIDERS" objtype="CONTRACTOR" rs="RS5" field="ID_PROVIDER">
<SAVE cn="CN1">
 <BEFORESAVE>
    DELETE FROM LTMATERIAL_CONTRACTOR WHERE ID_TMATERIAL={_OID_};
 </BEFORESAVE>
 <INSERT>
    INSERT INTO LTMATERIAL_CONTRACTOR (ID_TMATERIAL, ID_CONTRACTOR) VALUES ({_OID_}, {_LOID_});
 </INSERT>
 <UPDATE>
   INSERT INTO LTMATERIAL_CONTRACTOR (ID_TMATERIAL, ID_CONTRACTOR) VALUES ({_OID_}, {_LOID_});
 </UPDATE>
 <DELETE/>
 <AFTERSAVE/>
</SAVE>
    </LINKS>
   <LINKS code="PLACES" objtype="STORAGE_PLACE" rs="RS6" field="ID_PLACE"><SAVE cn="CN1"><BEFORESAVE>DELETE FROM LTMATERIAL_SPLACE WHERE ID_TMATERIAL={_OID_};</BEFORESAVE><INSERT>INSERT INTO LTMATERIAL_SPLACE (ID_TMATERIAL, ID_SPLACE) VALUES ({_OID_}, {_LOID_});</INSERT><UPDATE>INSERT INTO LTMATERIAL_SPLACE (ID_TMATERIAL, ID_SPLACE) VALUES ({_OID_}, {_LOID_});</UPDATE><DELETE/><AFTERSAVE/></SAVE></LINKS>
   <LINKS code="UNIT" objtype="UNIT" rs="RS1" field="ID_UNIT" />
   <LINKS code="AUNIT" objtype="UNIT" rs="RS1" field="ID_AUNIT" />
   <LINKS code="CATEGORY" objtype="MATERIAL_FOLDER" rs="RS1" field="IDCATEGORY" />
</LINKTABLE>



Без проблем получаю первый тэг <LINKTABLE>
А вот при попытке спросить у него ChildNodes получаю Access violation


 for i:=0 to LinksNode.ChildNodes.Count - 1 do <-Access violation
   begin
     Node := LinksNode.ChildNodes[i];
     if StringIs(LINK_NODE_NAME, Node.NodeName) then
        Add(Node) else
     if StringIs(INCLUDE_NODE_NAME, Node.NodeName) then
         LoadInclude(Node) else continue;
   end;


Тоже самое без проблем приходит с другиси XML. Полагаю, что какая-то ошибка в самой Delphi. Перепробовал всё. Не могу найти причину возникновения ошибки. Помогите пожалуйста.


 
31512 ©   (2005-11-17 13:32) [1]

Странно... Перевёл получение первого тэга <LINKTABLE> не от TXMLDocument, а от IXMLDocument и всё работает хорошо.


 
Reindeer Moss Eater ©   (2005-11-17 16:03) [2]

Без проблем получаю первый тэг <LINKTABLE>
А вот при попытке спросить у него ChildNodes получаю Access violation


Это потому, что тебе только кажется, что ты получил <LINKTABLE>
На самом деле ты получил nil
Поэтому и AV


 
31512 ©   (2005-11-19 09:22) [3]


> Reindeer Moss Eater ©   (17.11.05 16:03) [2]

Может я чего-то не понимаю, но я проверял: указатель на соответсвующий IXMLNode (LinksNode) не null. К ряду свойств доступ имеется, а вот именно к ChildNodes и ещё к нескольким -Delphi exception. NodeName, например, берётся без проблем, а вот OwnerDocument уже фигушки.


 
Polevi ©   (2005-11-20 08:03) [4]

значит указатель ссылается не туда



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
14-1129825021
LordOfRock
2005-10-20 20:17
2005.12.18
Темы для Nokia 6230i


14-1133021802
Desdechado
2005-11-26 19:16
2005.12.18
Опрос: Уход за рабочим местом


4-1125490472
Никита
2005-08-31 16:14
2005.12.18
Запись CD


2-1133546839
coral
2005-12-02 21:07
2005.12.18
ListBox


2-1133345383
Ильичев С.А.
2005-11-30 13:09
2005.12.18
ActionManager