问题描述
当我尝试使用 XMLDocument
的 DocumentElement
时,总是遇到访问冲突。我根据文件的存在创建了 XMLDocument
。
I always get an access violation when I try to use the DocumentElement
of the XMLDocument
. I create XMLDocument
based on the existence of some file.
错误消息
我的代码
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.
由于对象或指针的初始化不正确而导致访问冲突,这是否意味着 XMLDocument
是否未初始化?
Access violations arise due to improper initialization of object or pointers, does that mean that the XMLDocument
is not being initialized?
推荐答案
如David所示,只是将XMLDocument1声明从 XMLDocument1:TXMLDocument
到 XMLDocument1:IXMLDocument
解决了该问题。您的问题与
As indicated by David just changing your XMLDocument1 declaration from XMLDocument1: TXMLDocument
to XMLDocument1: IXMLDocument
solves the problem. Your issue is related to Using TXmlDocument
这篇关于在XMLDocument中使用DocumentElement时发生访问冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!