我正在使用TXMLDocument
来编写一个用于Web服务器的XML字符串。该组件在服务器接收请求时创建,生成XML并将其传递回客户端,然后释放该组件。然而,当该组件被释放时,会出现无效的指针操作
。
XML:= TXMLDocument.Create(nil);
try
XML.Active:= True;
nRoot:= XML.AddChild('topics');
for X := 0 to FCHM.Topics.Count - 1 do begin
nTopic:= nRoot.AddChild('topic');
//Add more data...
end;
Response.ContentText:= XML.XML.Text;
Response.ContentType:= 'text/xml';
XML.Active:= False;
finally
XML.Free; //<-- Invalid pointer operation
end;
我为什么会收到这个错误信息,如何去除它?
奇怪的是,尽管我可以确认
Response.ContentText
确实得到了XML数据,但由于某种原因,在此异常之后,Web服务器无法将此数据返回给客户端 - 但我假设这是一个不同的原因/效果问题。附注 - 因为Web服务器是多线程和
TXMLDocument
是COM,所以在此处理程序周围调用CoInitialize(nil)
和CoUninitialize
。
iDoc := NewXMLDocument;
其中iDoc
是IXMLDocument
类型的变量。 - pf1957XML
变量声明为IXMLDocument
,并调用NewXMLDocument
函数来创建一个新文档。 - TLama