主题:再请教foxdb朋友
有约故人来
[专家分:50] 发布于 2009-01-13 18:43:00
我现在已经决定采用您的局域网安全方法改写我的系统,今天碰到一问题,如下:
通常我们可以通过 file()函数判断特定目录下某一文件是否存在,如:
if file("e:\data\abc.doc")
.....(open it)
else
messagebox("文件不存在")
endif
但用您的方法设置后是行不通的,请问您解决过此类问题吗?
谢谢!
回复列表 (共8个回复)
沙发
foxdb [专家分:1830] 发布于 2009-01-13 19:48:00
你那样当然不行!
你要这样才行:
M_TEST_OPEN=FOPEN('e:\data\abc.doc',10)
?FCLOSE(M_TEST_OPEN)
IF M_TEST_OPEN<0
?MESSAGEBOX(' 远程网络故障!速请电脑管理员解决! ',308,'网络故障提示!')
ELSE
***.....(open it)
ENDIF
(其原理请看我给你的短信)要是你都OK了可别忘了给我评分哦!
板凳
hw2007name [专家分:4790] 发布于 2009-01-13 23:12:00
if file("e:\data\abc.doc")&&如果文件是隐藏的FILE()是判断不出来的.
.....(open it) &&打开文件前是不是应该判断一下此文件是否正在使用,1楼的FOPEN()目的也就是这个作用.
else
messagebox("文件不存在")
endif
其实要判断一个文件是否正在使用,用重命名时的错误捕捉最简单:
cFileName="e:\data\abc.doc"
nIfpass=.T.
cERROR=ON("ERROR")
ON ERROR nIfpass=.F.
RENAME (cFileName) to (cFileName) &&把文件名修改为自身的名称,其实就是没有修改,但如果文件正被使用,此命令将产生错误,因此如果发生错误,表示文件正被使用.
ON ERROR &cERROR
IF nIfpass=.F.
messagebox("文件正被其它程序使用!",48,"提示")
else
.....(open it)&&现在来打开应该没问题了.
ENDIF
3 楼
有约故人来 [专家分:50] 发布于 2009-01-15 12:02:00
谢谢,试了,已OK!
4 楼
有约故人来 [专家分:50] 发布于 2009-01-15 13:59:00
foxdb朋友,再请教您一下,用您设置局域网安全的方法,我们可以映射一个盘符,比如:X:,net use X: \\192.168.03.01\data...., data就是用您的方法设置拒绝访问的目录,之后我们可以用诸如 set default to x:的命令,但当data下面再建目录时,比如data\abc,就不能用set default to x:\abc,也不能用类似 copy file aaa.doc to x:\abc\aaa.doc,对此问题您是如何解决的呢?
5 楼
foxdb [专家分:1830] 发布于 2009-01-15 15:23:00
回楼主:
如果你用 set default to x: 的命令就没必要再用set default to x:\abc,因为set default to x:已经定位 X:为绝对路径的起始点,下面再有其他目录只有你知道,对用户来说没意义!你只要用绝对路径即可。如 USE x:\abd\aaa.dbf 等。
6 楼
foxdb [专家分:1830] 发布于 2009-01-15 15:48:00
你要知道并且今后要注意类似 set default to 和 copy file 等命令对看不见的东西是无效的。至于咋办请看我给你的短信息,希望你能弄通原理举一反三去解决问题。
7 楼
有约故人来 [专家分:50] 发布于 2009-01-15 17:10:00
谢谢!已试!尚有问题,烦劳查阅我的短信。
8 楼
foxdb [专家分:1830] 发布于 2009-01-15 18:19:00
回复见短信.....
我来回复