📄 qbf.prg
字号:
*数据恢复子程序
*程序名: QBF
*开发日期: 95,8,10
*程序员: 庄帆
*变量说明
*QDQ:选择驱动器
*ERR:接收错误信息
*DD:用于等待的伪变量
*TC:是否退出
*SCR1:存屏
*YYHQDQ:原隐含驱动器
*CPXYRL:磁盘剩余容量
*ESC1:READ时未修改按ESC键退出的READKEY值
*ESC2:READ时修改后按ESC键退出的READKEY值
*PS:磁盘盘数
*BBFILE:备份文件名
*JSQ:计数器
*XL:虚拟变量(无意义)
*YLJ:原路径
*BFZWJ:被复制的软盘文件(带驱动器)
*FZWJ:复制到硬盘的文件名(带驱动器及路径)
PRIVATE ALL except p_*
do jrz with p_gzrrxm,'进入取备份数据'
TC=.F.
ERR=0
DIMENSION BBFILE(99)
JSQ=1
XL=' '
DO WHILE JSQ<100
IF JSQ<10
BBFILE(JSQ)='BB.00'+STR(JSQ,1)
ELSE
BBFILE(JSQ)='BB.0'+STR(JSQ,2)
ENDIF
JSQ=JSQ+1
ENDDO
#DEFINE ESC1=12
#DEFINE ESC2=268
=CAPSLOCK(.T.)
SL=1
qd=.t.
DO FORM BFPS NAME BFPS
if qd
CLOSE TABLE ALL
DO WHILE .T.
DO WHILE .T.
*确认和检测软盘
QDQ=1
do form xzqdq
ON ERROR ERR=ERROR()
DO WHILE .T.
DO CASE
CASE QDQ=1
SET DEFAULT TO A:
CASE QDQ=2
SET DEFAULT TO B:
OTHERWISE
TC=.T.
EXIT
ENDCASE
CPXYRL=DISKSPACE()
EXIT
ENDDO
*驱动器没准备好的处理
IF ERR#0
QD=.T.
DHXX=IIF(QDQ=1,'A','B')+'软盘没有准备好或软盘损坏, 请检查!'+CHR(13)+;
'是否重试?'
DO FORM SFDHK
IF .NOT. QD
TC=.T.
EXIT
ENDIF
ERR=0
ELSE
EXIT
ENDIF
ENDDO
SET DEFAULT TO &p_cxlj
ON ERROR
IF TC
EXIT
ENDIF
*开始拷备软盘
SET COLOR TO
JSQ=1
DO CASE
CASE QDQ=1
*检测磁盘容量和盘正确以否
DO WHILE JSQ<=SL
SET DEFAULT TO A:
IF JSQ>1
dhxx='请放第'+STR(JSQ,2)+'张盘.'
do form &P_CXLJ.\dhk
ENDIF
IF (.NOT. FILE(BBFILE(JSQ)))
IF .NOT. WEXIST('CPC')
DEFINE WINDOW CPC FROM 8,25 TO 10,55 COLOR SCHEME 7 SHADOW
ENDIF
ACTIVATE WINDOW CPC
XL=' '
?? CHR(7)
DO WHILE (.NOT. FILE(BBFILE(JSQ)))
dhxx='磁盘放错.'
do form dhk
ENDDO
DEACTIVATE WINDOW CPC
ENDIF
SET DEFAULT TO A:
BBF=BBFILE(JSQ)
dhxx1='正在拷备数据, 请稍候...'
do form &P_CXLJ.\xxts name xxts
BFZWJ='A:\'+BBF
FZWJ=P_CXLJ+'\'+BBF
COPY FILE &BFZWJ TO &FZWJ
JSQ=JSQ+1
xxts.release
ENDDO
CASE QDQ=2
*检测磁盘容量和盘正确以否
DO WHILE JSQ<=SL
SET DEFAULT TO B:
IF JSQ>1
dhxx='请放第'+STR(JSQ,2)+'张盘.'
do form &P_CXLJ.\dhk
ENDIF
IF (.NOT. FILE(BBFILE(JSQ)))
IF .NOT. WEXIST('CPC')
DEFINE WINDOW CPC FROM 8,25 TO 10,55 COLOR SCHEME 7 SHADOW
ENDIF
ACTIVATE WINDOW CPC
XL=' '
?? CHR(7)
DO WHILE (.NOT. FILE(BBFILE(JSQ)))
dhxx='磁盘放错.'
do form dhk
ENDDO
DEACTIVATE WINDOW CPC
ENDIF
SET DEFAULT TO B:
BBF=BBFILE(JSQ)
dhxx1='正在拷备数据, 请稍候...'
do form &P_CXLJ.\xxts name xxts
BFZWJ='B:\'+BBF
FZWJ=P_CXLJ+'\'+BBF
COPY FILE &BFZWJ TO &FZWJ
JSQ=JSQ+1
xxts.release
ENDDO
ENDCASE
*利用ARJ在硬盘上恢复数据
SET DEFAULT TO &P_CXLJ
DHXX1='正在处理数据,请稍候...'
DO FORM XXTS NAME XXTS
!ARJ E -Y -V1200 BB.001 *.DBF *.?DX *.MEM
XXTS.RELEASE
WAIT WINDOW '恢复完毕!' NOWAIT
EXIT
ENDDO
endif
#UNDEFINE ESC1
#UNDEFINE ESC2
SET DEFAULT TO &P_CXLJ
do jrz with p_gzrrxm,'退出取备份数据'
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -