DLL单元创建XML对象内存报错(D7),该怎么解决

DLL单元创建XML对象内存报错(D7)
unit uImportCtrl;

interface
uses
  XMLDoc, XMLIntf, Forms, SysUtils, ActiveX;

type
  TDllImport = class
  private

  protected

  public
  XMLExamInfoAll: TXMLDocument;
  XMLPatInfo : TXMLDocument;
  XMLExamInfo : TXMLDocument;
  XMLExamDetail : TXMLDocument;

  constructor Create;
  function FreeImportDll: Integer;
  end;

var
  CtrlDll: TDllImport;  

implementation

constructor TDllImport.Create;
begin
  CoInitialize(nil);
  XMLExamInfoAll := TXMLDocument.Create(nil);
  XMLExamInfoAll.Active := True;
  XMLExamInfoAll.Version := '1.0';
  XMLExamInfoAll.Encoding:= 'gbk';

  XMLPatInfo := TXMLDocument.Create(nil);
  XMLPatInfo.Active := True;
  XMLPatInfo.Version := '1.0';
  XMLPatInfo.Encoding:= 'gbk';

  XMLExamInfo := TXMLDocument.Create(nil);
  XMLExamInfo.Active := True;
  XMLPatInfo.Version := '1.0';
  XMLPatInfo.Encoding:= 'gbk';

  XMLExamDetail := TXMLDocument.Create(nil);
  XMLExamDetail.Active := True;
  XMLExamDetail.Version := '1.0';
  XMLExamDetail.Encoding:= 'gbk';
end;

function TDllImport.FreeImportDll: Integer;
begin
  if Assigned(XMLExamInfoAll) then
  begin
  XMLExamInfoAll.Active := False;
  FreeAndNil(XMLExamInfoAll);
  end;

  if Assigned(XMLPatInfo) then
  begin
  XMLPatInfo.Active := False;
  FreeAndNil(XMLPatInfo);
  end;

  if Assigned(XMLExamInfo) then
  begin
  XMLExamInfo.Active := False;
  FreeAndNil(XMLExamInfo);
  end;

  if Assigned(XMLExamDetail) then
  begin
  XMLExamDetail.Active := False;
  FreeAndNil(XMLExamDetail);
  end;
end;

end.

在执行构造函数XMLExamInfoAll := TXMLDocument.Create(nil);是出错,提示地址错误。大家帮忙看看问题出在哪里?

------解决方案--------------------
XMLExamInfoAll: TXMLDocument;
把上面的修改为下面的定义试试看

XMLExamInfoAll: IXMLDocument;