Текущий архив: 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.038 c