我正在开发一个应用程序来保存和读取 XML 的首选项。当我添加新功能时,我当然也添加了配置这些功能的能力,但我发现我的代码在尝试从尚不存在的 XML 读取变量时崩溃。发生这种情况时,任何应该读取的后续变量都不会被读取,这让我失去了一些偏好。以这段代码为例:
xmldoc := TXMLDocument.Create(nil);
Try
xmldoc.LoadFromFile('c:\myxml.xml');
xmldoc.Active := True;
if xmldoc.ChildNodes.Count >= 1 then
Begin
Control := Root.ChildNodes.FindNode('Control');
if Assigned(Control) then
Begin
Username.Text := Control.Attributes['Username'];
Password.Text := Control.Attributes['Password'];
AutoValidate.Checked := Control.Attributes['AutoValidate'];
AutoIRC.Checked := Control.Attributes['AutoIRC'];
Passive.Checked := Control.Attributes['Passive'];
DoNothing.Checked := Control.Attributes['DoNothing'];
OpenPage.Checked := Control.Attributes['OpenPage'];
DownloadUsingBrowser.Checked := Control.Attributes['DownloadUsingBrowser'];
RSSFeed.Checked := Control.Attributes['RSSFeed'];
SaveToFolder.Checked := Control.Attributes['SaveToFolder'];
SaveToFTP.Checked := Control.Attributes['SaveToFTP'];
SavePath.Text := Control.Attributes['SavePath'];
FTPPath.Text := Control.Attributes['FTPPath'];
End;
End;
Finally
xmldoc.Active := False;
End;
假设我刚刚在“AutoValidate”中添加了一个选项 - XML 文件没有这个属性,因为它还没有被应用程序保存,但是应用程序在启动时仍然尝试读取这个属性(读取首选项)。
我怎样才能得到它,以便丢失的属性不会引发旧的“异常类 EVariantTypeCastError 和消息‘无法将类型的变体 (Null) 转换为类型 (Boolean)’”