回 帖 发 新 帖 刷新版面

主题:再请教foxdb朋友

我现在已经决定采用您的局域网安全方法改写我的系统,今天碰到一问题,如下:
  
   通常我们可以通过 file()函数判断特定目录下某一文件是否存在,如:
  
  if file("e:\data\abc.doc")
     .....(open it)
  else
     messagebox("文件不存在")
  endif

  但用您的方法设置后是行不通的,请问您解决过此类问题吗?
  谢谢!

回复列表 (共8个回复)

沙发

你那样当然不行!

你要这样才行:

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了可别忘了给我评分哦!

板凳

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 楼


谢谢,试了,已OK!

4 楼


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 楼

回楼主:

如果你用 set default to x: 的命令就没必要再用set default to x:\abc,因为set default to x:已经定位 X:为绝对路径的起始点,下面再有其他目录只有你知道,对用户来说没意义!你只要用绝对路径即可。如 USE x:\abd\aaa.dbf 等。

6 楼

你要知道并且今后要注意类似 set default to 和 copy file 等命令对看不见的东西是无效的。至于咋办请看我给你的短信息,希望你能弄通原理举一反三去解决问题。

7 楼


谢谢!已试!尚有问题,烦劳查阅我的短信。

8 楼

回复见短信.....

我来回复

您尚未登录,请登录后再回复。点此登录或注册