荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 增强FoxPro程序命令执行过程的可视性
发信站: BBS 荔园晨风站 (Wed Jan 27 17:52:56 1999), 转信


    FoxPro 2.5 For Dos是目前使用最广泛的数据库编程语言,其命
令、函数多,且功能强大。但美中不足的是,有些命令(如"COPY TO…
和PACK"等)虽然可用一个语句就能完成预定工作,但命令的执行过程
是通过FoxPro内部运行来实现的,其可视性差,特别是在处理庞大的数
据库时,屏幕会出现呆滞现象,同时也不知道计算机的工作进程,甚至
有时死机也不知道,时间长了往往会造成操作人员的乏味。
    能不能在FoxPro程序执行过程中增强其可视性,使屏幕活动起来
呢?
    回答是肯定的。下面笔者将增强"COPY TO…"和"PACK"两个命令
的可视性应用函数提供给大家。(其界面仿Windows 95中文件拷贝及
清空回收站效果,同时温度计也标明了工作进程,在实际应用中收效甚
好。)
    函数清单如下:
    u_Vcopy 可视数据库拷贝函数(与copy to……同效)
    格式:=u_Vcopy<源库名>,<目的库名>,[条件])
    FUNC u_Vcopy
    PARA x_1,x_2,x_3
    PRIV ALL LIKE x_*
    SET TALK OFF
      if empt(x_1)or empt(x_2)
        wait '调用格式:=u_Vcopy(<源库名>,<目的库名>,[条件])'
wind nowa
        retu
      endi
      @ 0,0,24,80 BOX REPL(chr(176),9)
        x_safe=set('safe')
        x_sele=sele(0)
        x_w='w'+sys(3)
      DIME x_C(4)
      x_C(1)='' &&区位码:1385
      x_C(2)='' &&区位码:1386
      x_C(3)='' &&区位码:1387
      x_C(4)='' &&区位码:1388
      DEFI WIND(x_w) FROM INT((SROW()-6)/2),INT((SCOL()-57)/
2);
        TO INT((SROW()-6)/2)+6,INT((SCOL()-57)/2)+57;
        DOUB COLO SCHE 5 TITL '正在拷贝'
      ACTI WIND(x_w)
        @ 2,1 to wrow(),wcol()-2
    SET SAFE OFF
      sele 0
        use(x_1)
        x_selel=sele(0)
        copy stru to (x_2)
      sele 0
        use(x_2)
        x_sele2=sele(0)
      sele (x_sele1)
        if empt(x_3)
     x_coun=recc()
        else
     set filt to &x_3
     coun to x_coun
        endi
    go top
    stor 1 to x_i,x_j,x_k
    x_spac=int((wcol()-16)/2)*2
    x_speed=int(x_coun/iif(x_coun<20,x_coun,20))
    x_coun=(wcol()-7)/x_coun
      DO WHIL not eof()
        @ 1,2 say PADR(ALLT(str(recn(),5)),5,'.')
        @ 1,8 say ''+spac(x_spac)+''  &&区位码:1285  121
6
        @ 1,8+x_i*2 say x_C(x_j)+iif(x_i=x_spac/2,'','')&&
区位码:1217
        @ 3,3+x_k*x_coun say' ' COLO 7/7*
      scat to x_arra
      inse into(x_2)from arra x_arra
      SKIP
        if x_k/x_speed=int(x_k/x_speed)
      x_i=iif(x_i=x_spac/2,1,x_i+1)
      x_j=iif(x_j=4,1,x_j+1)
        endi
      x_k=x_k+1
      ENDD
        @ 1,8 say ''+spac(x_spac)+'' &&区位码:1285  1217
       use in (x_sele1)
       use in (x_sele2)
     sele(x_sele)
      RELE WIND (x_w)
    SET SAFE &x_safe.
    RETU
    FUNC u_Vpack
    PRIV ALL LIKE x_
    SET TALK OFF
      if used()=.F.
        wait' 数据库未打开!' wind nowa
        retu
      endi
      @ 0,0,24,80 BOX REPL(chr(176),9)
        x_safe=set('safe')
        x_sele=sele(0)
        x_w='w'+sys(3)
        x_FILE=strt(dbf(),sys(5)+curd())
      DIME x_C(4)
      x_C(1)=''
     &&区位码:1385
      x_C(2)=''
     &&区位码:1386
      x_C(3)=''
     &&区位码:1387
      x_C(4)=''
     &&区位码:1388
      DEFI WIND(x_w)FORM INT((SROW()-6)/2),INT((SCOL()-57)/2
);
        TO INT((SROW()-6)/2)+6,INT((SCOL()-57)/2)+57;
        DOUB COLO SCHE 5 TITL '正在删除'
      ACTI WIND(x_w)
        @ 2,1 to wrow(),wcol()-2
    SET SAFE OFF
        x_F='x'+righ(sys(3),7)+' DBF'
       copy stru to (x_F)
      sele 0
        use (x_F)
        x_selel=sele(0)
      sele(x_sele)
      x_coun=recc()
        go top
        stor I to x_i,x_j,x_k
        x_spac=int((wcol()-16)/2)*2
        x_speed=int((x_coun/iif(x_coun<20,x_coun,20))
        x_coun=(wcol()-7)/x_coun
      DO WHIL not eof()
     @ 1,2 say PADR(ALLT(str(recn(),5)),5,'.')
     @ 1,8 say ''+spac(x_spac)+'','')&&区位码:1287  1284
     @ 1,8+x_i*2 say x_C(x_j)+iif(x_i)=x_spac/2,'','')&&区
位码:1283
     @ 3,3+x_k*x_coun say'' COLO 7/7*
      if not dele()
        scat to x_arra
        inse into (x_F)from arra x_arra
      endi
        SKIP
     if x_k/x_speed=int(x_k/x_speed)
        x_i=iif(x_i=x_spac/2,1,x_i+1)
        x_j=iif(x_j=4,1,x_j+1)
     endi
        x_k=x_k+1
      ENDD
     @ 1,8 say''+spac(x+spac)+'' &&区位码:1216 1283
        use in(x_selel)
      sele(x_sele)
        use.
      DELE FILE(x_FILE)
      RENA(x_F) to (x_FILE)FILE)
        use (x_FILE)
      RELE WIND (x_w)
    SET SAFE &x_safe.
    RETU
    程序在UCDOS 3.1及以上版本
    FoxPro 2.5 For DOS下运行通过。

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店