我想在一个继承与TObject的类中动态创建TXMLDocument,但是了总是出错,请大家指点,代码如下:
var 
  Axml: TXMLDocument;
  xn: IXMLNode;
begin
  Axml := TXMLDocument.Create(nil);
  try
    Axml.LoadFromFile('c:\123.xml');
    Axml.Active := true;
    xn := Axml.DocumentElement;  // 这一句总是出错,过不了,Access violation错误。
    // 其他代码.....
  finally
    
    Axml := nil;  // 这里如果用 Axml.Free 也是会出错
  end;
我知道在Create创建时指定一个TComponent子类是可以的,比如在窗体中的话可以使用self,但是这里面没有办法这样,请高手指点一下,该怎么做?

解决方案 »

  1.   

    我的使用delphi 7,下面的网址里面有说到这个内容,但是方法我试了没办法解决我的问题,
    http://www.cnblogs.com/cardon/archive/2010/03/07/1680190.html
      

  2.   

    这样可以的var 
      Axml: TXMLDocument;
      xn: IXMLNode;
      DocIntf : IXMLDocument;
    begin
      Axml := TXMLDocument.Create(nil);
      DocIntf := Axml;
      try
        Axml.LoadFromFile('c:\xx.xml');
        Axml.Active := true;
        xn := Axml.DocumentElement;
      finally    Axml := nil;
        DocIntf := nil
      end;
    end;
      

  3.   

    也可以用TXMLDocument.Create(Application);
      

  4.   

    finally后应该用Free或者FreeAndnil;
      

  5.   

    谢谢2楼的答复,现在可以了,IXMLDocument与TXMLDocument的一字之差,我没有注意。