我正在使用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/

10-09 16:57