Violação de acesso ao usar DocumentElement no XMLDocument

Eu sempre recebo uma violação de acesso quando tento usar oDocumentElement doXMLDocument. eu crioXMLDocument com base na existência de algum arquivo.

Mensagem de erro

O projeto project1.exe gerou a classe de exceção EAccessViolation com a mensagem 'Violação de acesso no endereço 0047B152 no módulo' project1.exe'.Lead of Address B1D59357 '

Meu código

unit XMLBase;

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

type
  TXMLbase = class
  private
    { Private declarations }
  public
    XMLDocument1: TXMLDocument;
    root: IXMLNode;    
    constructor Create;
  end;

var
  fn: string;

implementation

constructor TXMLbase.Create;
begin   
  fn := ChangeFileExt(Application.ExeName, '.xml');
  XMLDocument1 := TXMLDocument.Create(nil);
  XMLDocument1.Options := [doNodeAutoIndent];
  XMLDocument1.Active := False;
  //optional, is used to indent the Xml document
  if FileExists(fn) then
  begin
  XMLDocument1.LoadFromFile(fn);
  XMLDocument1.Active:= True;
  root := XMLDocument1.DocumentElement;  //<<--- Access Voilation
  end
  else
  begin
    XMLDocument1.Active := False;
    XMLDocument1.XML.Text := '';
    XMLDocument1.Active := True;
    root := XMLDocument1.AddChild('Settings');    
  end;
XMLDocument1.SaveToFile(fn);
end;

end.

Violações de acesso surgem devido a inicialização incorreta de objeto ou ponteiros, isso significa que oXMLDocument não está sendo inicializado?

questionAnswers(2)

yourAnswerToTheQuestion