回 帖 发 新 帖 刷新版面

主题:一个较难的问题-关于数据备份表单执行时出错的问题

CLOSE ALL
path_1=ADDBS(ALLTRIM(thisform.text1.Value))
path_2=ADDBS(ALLTRIM(thisform.text2.Value))
   IF EMPTY(path_1) OR EMPTY(path_2)
      MESSAGEBOX("备份数据库名和路径不能为空!",16,"电子检索系统")
   ELSE
      IF DIRECTORY(path_2)=.f.
          MD "&path_2"
       ENDIF
      IF RIGHT(path_1,1) <> "\"
      dirpath=path_1+"\*.*"
      Ypath=path_1+"\"
      ELSE
       dirpath=path_1+"*.*"
       Ypath=path_1
      ENDIF
      ADIR(filecursor,dirpath)
      cout=ALEN(filecursor,1)
      thisform.olecontrol1.Visible=.t.
      thisform.olecontrol1.max=cout
FOR m=1 TO cout
    thispathname=Ypath+ALLTRIM(filecursor(m,1))
    bakpathname=path_2+ALLTRIM(filecursor(m,1))
    if JUSTEXT(thispathname) = [b][color=800000]'Plantsearcher.exe' [/color][/b]or JUSTFNAME(thispathname) = [color=800080]'foxuser.dbf' [/color];or  JUSTFNAME(thispathname) = [b]'foxuser.fpt' [/b]
    else
       COPY FILE "&thispathname" TO "&bakpathname"
       thisform.olecontrol1.value=m
       thisform.Refresh
    endif
ENDFOR
      thisform.olecontrol1.Visible=.f.
      MESSAGEBOX("数据备份成功!",48,"图文检索系统")
     ENDIF
     thisform.refresh
     现在关键的问题是我不知道怎样忽略掉.exe和foxuser.dbf和foxuser.fxp在每次执行程序后总会产生那两个令人讨厌的文件。。。。。。。

回复列表 (共6个回复)

沙发

你可以把目录中的文件信息导入到一个临时表中,然后根据需要删除不需要的记录,最后用
SCAN FOR !DELE()就搞定了

板凳

感谢老师的解答,我写了几个也不行,关键是不懂怎么制定个详细的思路,老师可以帮我写一个完整的例子吗!如可以将十分感激!

3 楼

帮楼主测试了一下,只要按下面改一句代码就行了:

    if JUSTEXT(thispathname) = 'EXE' or JUSTFNAME(thispathname) = 'FOXUSER.DBF'or  JUSTFNAME(thispathname) = 'FOXUSER.FPT' 

4 楼

建议楼主text1和text2的右侧各加一个命令按钮,在其click事件中用GETDIR()来获取路径更好。

5 楼


多谢老师的指点,已成功解决!

6 楼

回头想了一下,在连编后,准备制作成SETUP.EXE前,什么文件应该包含在内,什么文件可以去掉.而不影响程序的正常运行?

我来回复

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