| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5127 人关注过本帖
标题:Invalid path or file name!求解!
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
set default to需要的是路径名,不是文件名。mis.dbf是文件名,当路径使的时候,use mis会到c:\Delete\program\mis.dbf文件夹下找mis.dbf,即c:\Delete\program\mis.dbf\mis.dbf,这个目录不存在,所以报出那个信息,“无效的路径或文件名”。

你真正要找的文件,是c:\Delete\program\mis.dbf,那么mis.dbf的路径应是c:\Delete\program,是set default to c:\Delete\program,然后use mis。

[ 本帖最后由 TonyDeng 于 2011-12-1 01:37 编辑 ]

授人以渔,不授人以鱼。
2011-12-01 01:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
另外,你这个语句SET PATH TO pathPrg,也是错的。这样写,搜索路径名是pathprg,而不是变量pathprg所给出的那个。正确的写法是set path to (pathprg)或set path to &pathprg。

授人以渔,不授人以鱼。
2011-12-01 01:30
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 12楼 TonyDeng
受教受教,这样以来有些奇怪的地方也都消失了!
2011-12-01 01:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
其实,你的pathprg、dbfpath之类变量,如果用在set path to和set default to命令上,根本不需要使用变量,直接写在命令中就可以了,更不需要用全局变量。用变量记录这些路径名字的时候,是在后面的代码中do xxx.prg或use时临时附加上去的,为的是避免VFP到处搜索或搜错了(有的时候指定多个搜索路径下有重复的文件名时就不能简单地set to查寻);或者,当你发布的程序不是在跟开发时一模一样的路径中运行时,必须要在程序外部读入系统虚拟根目录,那是无法硬编码在程序中的,就要用到变量。像你现在这样,只用一次,不必这样写。

授人以渔,不授人以鱼。
2011-12-01 02:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
VFP所有版本的读取启动目录函数,都是有毛病的,不要依赖那个东西。建议两种处理办法:一是调用API取得正确的启动目录名;二是编辑外部数据文件读入(类如注册表的功能,最佳的书写位置是config.fpw文件)。

授人以渔,不授人以鱼。
2011-12-01 02:05
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 14楼 TonyDeng
明白了,得到的比我问的还多哈,谢谢!
2011-12-01 03:07
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 15楼 TonyDeng
config.fpw 是自己创建一个么?要写什么内容呢。。
2011-12-01 03:10
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:4 
以下是引用Bunny008在2011-12-1 03:10:11的发言:

config.fpw 是自己创建一个么?要写什么内容呢。。
config.fpw——你可以把需要的一些基本设置写在里面。
如你可以写:
screen=off
status   bar=off
Talk=OFF
safe=off
resource=off
century=on
date=ansi


2011-12-01 09:26
yttv8
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2011-11-25
收藏
得分:0 
回复 6楼 qjbzjp
sys(5)+sys(2003)不就是当前的默认目录么?
我用sys(16)的目的,就是连编以后,把exe程序(还有dbf等文件)发给其他人,不管对方放在哪个文件夹下都能用,而不用非得和我本机的目录一致。用您的sys(5)+sys(2003)我觉得好像不能实现吧。。。
加了messagebox显示的路径没错,是我想要的当前目录。
另15楼大大所说的:
1、其实,你的pathprg、dbfpath之类变量,如果用在set path to和set default to命令上,根本不需要使用变量,直接写在命令中就可以了,更不需要用全局变量。用变量记录这些路径名字的时候,是在后面的代码中do xxx.prg或use时临时附加上去的,为的是避免VFP到处搜索或搜错了(有的时候指定多个搜索路径下有重复的文件名时就不能简单地set to查寻);或者,当你发布的程序不是在跟开发时一模一样的路径中运行时,必须要在程序外部读入系统虚拟根目录,那是无法硬编码在程序中的,就要用到变量。像你现在这样,只用一次,不必这样写。
2、VFP所有版本的读取启动目录函数,都是有毛病的,不要依赖那个东西。建议两种处理办法:一是调用API取得正确的启动目录名;二是编辑外部数据文件读入(类如注册表的功能,最佳的书写位置是config.fpw文件)。
请教下:
1、我也是开头用了public变量paths取了路径,调取data.dbf。而且在后面控件list1的click事件中,需要让控件image1显示相应的图片,即
image1.picture=paths+'\drawing\'+ALLTRIM(p)+'.jpg'&&在当前paths目录下有个drawing文件夹,变量p取的图片文件名
不知我这种情况,是否需要全局变量?
2、如何调用API取得正确的启动目录名?
2011-12-01 09:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 19楼 yttv8
1.需要的图片文件不在搜索路径上,要添加路径,此时是应该使用路径字符串叠加,所以需要全局变量。换句话说,此时不必set path to了。

2.用API与操作系统结合过于紧密,而且现在的问题是在VFP的运行模式上,解释执行和编译执行是不一样的,因此才导致开发时和发布时取得不同的路径,这才是麻烦所在。API取的是.EXE程序启动时的目录,当你编译后,启动A.EXE,那么API得到A.EXE所在的目录,但在开发时,你启动的是VFP.EXE,它在VFP的安装目录中。很显然,你设计系统的目录结构不建立在VFP的安装目录上,用相对路径也无法移植。

授人以渔,不授人以鱼。
2011-12-01 10:22
快速回复:Invalid path or file name!求解!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016719 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved