我正在使用TXMLDocument
编写Web服务器中使用的XML字符串。当服务器接收到请求,生成XML,将其传递回客户端时,就创建了该组件,然后释放该组件。但是,当这个组件是免费的,我得到Invalid pointer operation
。
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服务器在发生此异常后无法将数据返回给客户端-但我假设这是一个不同的因果关系问题。PS-在此处理程序周围调用
CoInitialize(nil)
和CoUninitialize
,因为Web服务器是多线程的,而TXMLDocument
是COM。 最佳答案
它在 constructor's
引用中说明:
由于您没有在Owner
构造函数调用中指定任何TXMLDocument
,因此您不应该自己释放它。
关于xml - 释放时的TXMLDocument 'Invalid pointer operation',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18034839/