Главная страница
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.49 MB
Время: 0.058 c
9-1088260037
Proger
2004-06-26 18:27
2004.10.24
Быстрый доступ к пикселам


9-1087820889
Zak3D[@Tm]
2004-06-21 16:28
2004.10.24
OpenGL на Делфи и на С.


1-1097086817
Леший
2004-10-06 22:20
2004.10.24
Работа с архиваторами


14-1096614449
Babay
2004-10-01 11:07
2004.10.24
Книги по Delph 8. Поделитесь впечатлениями.


1-1097521677
DronVelikii
2004-10-11 23:07
2004.10.24
Передача динамического массива в DLL