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

Вниз

AV при использовании TXMLDocument   Найти похожие ветки 

 
Devel ©   (2004-09-30 18:36) [0]

почему следующий код вызывает AV
var
 XMLDoc: TXMLDocument;
 XMLNode: IXMLNode;
begin
 XMLDoc := TXMLDocument.Create(nil);
 XMLNode := XMLDoc.DocumentElement.ChildNodes["field1"]; //Здесь возникает AV
end;

если вместо nil поставит owner-a Application - работает,
но мне нужно в runtime-е создать много экземляров TXMLDocument и если поставить owner Application то получится утечка...


 
Суслик ©   (2004-09-30 18:44) [1]

попробуй так написать

> var
>  XMLDoc: IXMLDocument;
>  XMLNode: IXMLNode;
> begin
>  XMLDoc := TXMLDocument.Create(nil);
>  XMLNode := XMLDoc.DocumentElement.ChildNodes["field1"];
> //Здесь возникает AV
> end;


 
Devel ©   (2004-09-30 18:51) [2]

сорри код немножко другой:
procedure MyProcedure(AXMLString: string);
var
XMLDoc: TXMLDocument;
XMLNode: IXMLNode;
begin
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.XML.Text := AXMLString;
XMLDoc.Active := True;
XMLNode := XMLDoc.DocumentElement.ChildNodes["field1"]; //Здесь возникает AV
end;


 
Суслик ©   (2004-09-30 18:53) [3]


>  [2] Devel ©   (30.09.04 18:51)

Ты сделал, что я написал?
У тебя мешается модель объектов и интерфейсов.

Напиши так

var
temp: xmldocument;
XMLDoc: iXMLDocument;
XMLNode: IXMLNode;
begin
temp := TXMLDocument.Create(nil);
XMLDoc := temp;
temp.XML.Text := AXMLString;
temp.Active := True;
XMLNode := XMLDoc.DocumentElement.ChildNodes["field1"]; //Здесь возникает AV
end;


 
Devel ©   (2004-09-30 18:54) [4]

Суслик ©   (30.09.04 18:44) [1]
procedure MyProcedure(AXMLString: string);
var
 XMLDoc: IXMLDocument;
 XMLNode: IXMLNode;
begin
 XMLDoc := TXMLDocument.Create(nil);
 XMLDoc.XML.Text := AXMLString;
 XMLDoc.Active := True;
 XMLNode := XMLDoc.DocumentElement.ChildNodes["field1"]; //Здесь возникает AV
end;

так работает, но обьясните пожалуйста что просходит в обой случаях?


 
Суслик ©   (2004-09-30 18:58) [5]


> так работает, но обьясните пожалуйста что просходит в обой
> случаях?

Объяснять не буду, т.к. в деталях не знаю - именно этот класс я ни разу так не использовал. Но причину могу предугадать - идет мешанина в использовании объекта и интерфейса. Это можно делать, но нужно хорошо понимать, что делаешь .

Вот книжечка http://www.books.ru/shop/books/6414.

В главе 2 очень хорошо изложено про использование интерфейсов. Советую прочесть.


 
Суслик ©   (2004-09-30 18:59) [6]


>  [5] Суслик ©   (30.09.04 18:58)

Корень зла (или добра, это как посмотреть) в методах _addref и _release в модуле XMLDoc.


 
Cobalt ©   (2004-10-07 22:36) [7]

2 Devel ©
Я повторил твой код - тоже, кстати, D7, WinXP :)
Так вот - у меня никакого AV нет - excaption EXMLDocError "No active document".


 
Юрий Зотов ©   (2004-10-07 22:45) [8]

> Devel ©   (30.09.04 18:36)  
> если поставить owner Application то получится утечка...

???


 
jack128 ©   (2004-10-07 23:08) [9]

Суслик ©   (30.09.04 18:58) [5]
Вот книжечка


кстати вот сайтик http://www.bcbdev.ru/ в разделе api можно скачать  "Книга "Основы СОМ". Автор Д. Роджерсон. 2.08 Мб. Загрузить.".  вот только начал читать, пока нравиться.. Правда на С...


 
Cobalt ©   (2004-10-08 00:41) [10]

Рекомендую тоже книгу "Модель COM и применение ATL 3.0"
Тоже на Си, так что рекомендую одалживать на время ;-)



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

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

Наверх




Память: 0.46 MB
Время: 0.035 c
3-1096016649
slaviq
2004-09-24 13:04
2004.10.24
Несколько Datbase Name в TDatabase


3-1096265024
MakNik
2004-09-27 10:03
2004.10.24
Аналог ф-ции NewID()


1-1097233522
JMasta
2004-10-08 15:05
2004.10.24
Наглядное хранение записей


3-1095927162
Галинка
2004-09-23 12:12
2004.10.24
Как добавить столбцы в DBGridat Runtime?


4-1095593167
ArhDD
2004-09-19 15:26
2004.10.24
Как в WinApi из Edit записать в переменную integer?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский