关于判断文件是否存在的奇怪问题 ( 积分: 100 )

  • 主题发起人 主题发起人 wolf_fly
  • 开始时间 开始时间
W

wolf_fly

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高人,小弟现在遇上了一个棘手的问题,希望大家能指点一二:<br>我将编译好的dll文件和dll的主调程序放在同一个目录下,主调程序通过读取dll.ini文件来得到相应的dll文件名(dll.ini文件中存放dll文件列表),然后用函数<br>FileExists(strFileName)来判断文件是否存在,第一次执行时,可以判断文件存在,(我的dll程序是一个报表生成程序),当我不生成报表直接关闭这个dll程序时,再次调用此dll文件,仍可以调用,但是当我生成一次报表后,在调用此dll文件时,主调程序会报错说dll文件不存在。。。这个问题大概就是这个样子,不知道我讲明白了没有,希望大家帮着看一下,小弟感激不尽!!!
 
各位高人,小弟现在遇上了一个棘手的问题,希望大家能指点一二:<br>我将编译好的dll文件和dll的主调程序放在同一个目录下,主调程序通过读取dll.ini文件来得到相应的dll文件名(dll.ini文件中存放dll文件列表),然后用函数<br>FileExists(strFileName)来判断文件是否存在,第一次执行时,可以判断文件存在,(我的dll程序是一个报表生成程序),当我不生成报表直接关闭这个dll程序时,再次调用此dll文件,仍可以调用,但是当我生成一次报表后,在调用此dll文件时,主调程序会报错说dll文件不存在。。。这个问题大概就是这个样子,不知道我讲明白了没有,希望大家帮着看一下,小弟感激不尽!!!
 
不会,太难了
 
用绝对路径,路径用PChar转换<br><br>还有问题吗?
 
哦,是不是你改变了当前的目录,所以主程序找不到你的Dll.ini,所以读出来的DLL文件路径是空值,所以找不到。你在主程序中看看你打开Dll.ini是不是直接用&quot;Dll.ini&quot;这样,如果是,你改成ExtractFilePath(ParamStr(0))+'Dll.ini';看看
 
这样也许可以解决问题,但是我觉得问题不是出在这,为什么第一次可以判断文件存在,可是执行一遍dll就不行了呢,而且还有第一次这个dll文件打开后,我如果不执行生成报表操作,就仍可以调用,当执行了一次生成报表的操作后就不能判断dll文件的存在了!!??
 
自己设断点,单步调试看看吧<br>知道每一步变量的变化也许就能找到问题了
 
To wzwcn :感谢先,<br>我没有 改编当前目录,我的主程序可以顺利的读取dll.ini文件,并且已经把相应的dll文件名都出来了,只是在判断是否存在时会出问题,如我上面说的一样
 
To cst_zf<br>我就是单步调试时发现,,已经读取出dll文件名,并且此文件也存在于当前目录,(还可以正常执行一次呢,第二次就不行了),再次判断时会找不到
 
前面的一位已经说明白了,就是在你生成报表期间,应用的当前路径已经被修改了。<br>所以你所说的当前目录已经不是你第一次打开的当前目录嘞。<br>你现在在FileExists(filename)语句之前先<br><br>changedir('c:/your directory');//真正定位到你的dll存放路径,第一次是因为你的应用程序缺省路径正好在这里。<br>FileExists(filename);//
 
问题已解决,谢谢各位!
 
后退
顶部