找回密码
 加入
搜索
查看: 2764|回复: 7

用FileOpenDialog打文件之后程序的运行路径问题。

  [复制链接]
发表于 2009-12-22 05:06:33 | 显示全部楼层 |阅读模式
不知道大家有没有遇到这样的问题,
在使用FileOpenDialog的过程中,
如果程序中有使用相当对路径赋值的变量,比如是一个数据文件,就出错。
我的代码太长这里不就贴了,
过程大致是这样的,
$SQLite_Data_Path ="sh.db"
数据库文件路径如果上,
如果没有使用FileOpenDialog打开文件,或者打开过与程序相同目录的文件
程序就可以正常操作数据库文件,
FileOpenDialog打开程序运行目录之后
再操作数据库文件就会报错,
换成绝对路径后就不会出错。
$SQLite_Data_Path ="c:\sh\sh.db"


除了使用绝对路径
有没有什么办法可以解决这个问题呀,
 楼主| 发表于 2009-12-22 05:24:35 | 显示全部楼层
本帖最后由 jybb001 于 2009-12-22 05:25 编辑

回复 1# jybb001

我自己已经解决了,开始我还以为是FileOpenDialog之后程序的运行目录变了呢,
测试了下

MsgBox(0,"",@ScriptDir)
$b="b.exe"
$a=FileOpenDialog("ddddddddd",@WindowsDir&"\","图像文件 (*.jpg;*.bmp)")
MsgBox(0,"",@ScriptDir)
Run($b)
b.exe和测试文件在同一目录下
虽然FileOpenDialog之后
run($b)失败了
但是@ScriptDir的值没变,不知道是什么原因,
以后再用相对路径为变量赋值时候最好加上,@ScriptDir
有知道的给解释下吧
发表于 2009-12-22 08:36:48 | 显示全部楼层
@ScriptDir这个似乎没必要,指定一个存在的文件夹字符串就行了,那是你要运行搜索功能的起点
你可以先看看$a的返回值是什么,那应该只是个文件名,而不是完整路径,run的参数是需要完整路径的
 楼主| 发表于 2009-12-23 02:54:05 | 显示全部楼层
本帖最后由 jybb001 于 2009-12-23 02:55 编辑

回复 3# netegg

如果中间不加那个FileOpenDialog直接Run($b)是可以的
之前和之后的$b值没变。
我都没有用$a ,
同样是run($b)
为什么加了FileOpenDialog之后
就不行了呢。
发表于 2009-12-23 03:15:07 | 显示全部楼层
本帖最后由 netegg 于 2009-12-23 03:16 编辑

在scite运行的话,有什么错误
 楼主| 发表于 2009-12-23 08:44:27 | 显示全部楼层
回复 5# netegg


    没有错误,就是不能运行呀
我这里只是举个例子而已,
实际的问题我已经在一楼说了,就是那个本来用相对路径可以,为什么用了FileOpenDialog之后就不行了,
FileOpenDialog和那个用相对路径赋值的变量没有任何关联。
发表于 2009-12-31 09:05:47 | 显示全部楼层
回复 6# jybb001
不好意思,这就不太清楚了,会不会是要关闭操作句柄一类的什么东西
 楼主| 发表于 2009-12-31 09:31:06 | 显示全部楼层
嗯,还是谢谢你,也没什么,不影响什么,只是不注意用到的话可能会出错,所以拿出来请教下,不过好像没太多人遇到这个问题,我在论坛上只看到还有一个人遇到了同样的问题,只是问的时候却是问的数据库的,我开始也以为是数据库操作的问题呢。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 16:17 , Processed in 0.074246 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表