Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.015 c
10-1109752033
Pietro
2005-03-02 11:27
2005.12.18
Работа с файлами


14-1132824008
Сержо
2005-11-24 12:20
2005.12.18
JavaScript: Перенос опций из одного select а в другой


14-1132911097
Koala
2005-11-25 12:31
2005.12.18
Срочно!!! Нужна помощь в востановлении данных....


3-1130736135
chsv
2005-10-31 08:22
2005.12.18
Не выполняется удаление из Access через ADO


14-1133169476
Жук
2005-11-28 12:17
2005.12.18
Просмотр телевидения (почти опрос)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский