当前位置: 爱符号 - 所有分类 - 桌面应用 - Delphi - 一个由相对路径引发的问题
一个由相对路径引发的问题 YiGeYouXiangDuiLuJingYinFaDeWenTi
啸天 发表于:2013-01-07 20:25:44 阅读(3519)
关键词:Delphi Delphi 相对路径 相对路径
摘要:在学习过程中由于使用相对路径导致的一个问题,并解决问题。

最近学习如何使用TXMLDocument组件去操作XML文档,我的程序是多窗体的程序一个Form1Form2两个窗体。在Form2中有TXMLDoucemnt和一个打开文件的对话框TOpenDialog

在这个程序中,Form2是动态创建的,创建窗体时,使用XMLDocument组件去读取XML文档中的数据并且显示出来。代码如下:

  procedure TfPlugMan.FormCreate(Sender: TObject);
  begin
    if not FileExists('PluginList.xml') then
    begin
      xmld.Active := True;
      xmld.Version := '1.0';
      xmld.Encoding := 'GB2312';
      xmld.AddChild('PluginList');
      
    end
    else
    begin
      //读取XML文档
    end;
  end;

这段代码中if not FileExists('PluginList.xml') thenxmld.SaveToFile('PluginList.xml');两句都使用了相对路径,这就导致了打开Form2窗体后再使用OpenDialog1去打开其他文件后,再将Form2窗体关闭并释放内存,再次重新创建并打开Form2FileExists('PluginList.xml')就会返回Flase 并执行创建XML文档,虽然不知道是什么原因导致xmld.SaveToFile('PluginList.xml');创建并保存XML文档时,还会在程序的同级文件夹下,但是,FileExists函数查找文件就会出错,不知道从哪里去找了,所以导致返回值为False,所以,我就使用了绝对路径。这样这个函数就会查找一个固定的文件了,所以代码改为:

  procedure TfPlugMan.FormCreate(Sender: TObject);
  begin
    AppPath := ExtractFilePath(Application.ExeName);
    if not FileExists(AppPath + 'PluginList.xml') then
    begin
      xmld.Active := True;
      xmld.Version := '1.0';
      xmld.Encoding := 'GB2312';
      xmld.AddChild('PluginList');
      xmld.SaveToFile(AppPath + 'PluginList.xml');
    end
    else
    begin
      //读取XML文档
      RePlugList;
    end;
  end;

这样重复上述动作后读取XML文档就不会再次被创建,所以在读取XML文档时就不会出现空文档了。

总结:

在使用外部文件时最好使用绝对路径,不要轻易去使用相对路径。因为使用相对路径有可能造成这样的结果。



声明:以上内容仅代表作者观点,不代表爱符号赞成此内容或立场
Delphi相关的分享
 
相对路径相关的分享
 
  • ·暂无相关分享
  •  
作者热播
 
相关分类
  • ·C++ 今:0 昨:0 总:7
  • ·MFC 今:0 昨:0 总:3
  • ·Qt 今:0 昨:0 总:0
  • ·C# 今:0 昨:0 总:28
  • ·Linq 今:0 昨:0 总:1
  • ·委托 今:0 昨:0 总:2
  • ·Delphi 今:0 昨:0 总:4
  • ·VB.NET 今:0 昨:0 总:0
  • ·VB6 今:0 昨:0 总:9
  • ·C 今:0 昨:0 总:1
热门分享
 
最新分享