FoxBASE+使用中的奇怪错误
要解决这个问题,只需在DOS系统盘,或CCDOS系统盘上建立一个环境设备文件加以修改即可。方法为:
A>COPY COM CONIG.SYS
FILES=18
^Z
这样,重新启动后就可以同时打开18-5=13个文件了。同时要注意,打开文件个数不是越多越好。因为,每增加一个,内存就会多开销48字节,使用户可用空间减少48字节。一般是够用就行。
二、“磁盘满”误判的原因
在640K内存,双软驱机上,一般是让一级汉字驻留内存,A驱放系统2#盘,B驱放使用盘。有时,FoxBASE+系统能够进入,但几乎不能使用任何命令。只要键入命令就出现“磁盘满”错误。只好退出检查,可B盘剩余2000KB以上,A盘也有近30KB的空间。重新进入,现象依旧。这套系统盘已使用较长时间均为正常,故怀疑病毒。可折腾很长时间,仍不能解决。观察分析后发现,FoxBASE+系统与其它覆盖系统有所不同;其它覆盖系统只存在重复读盘,可以在系统盘上加写保护;而FoxBASE+系统不仅存在重复读盘,还存在重复写盘。它在进入系统时,由SYS(3)函数产生文件名,在系统2#盘上建立一个长度为0的文件,使用命令时就直接在磁盘分配表中占用磁盘空间(由内存中的文件控制块FCB管理),而对文件长度进行修改,最后由QUIT命令收回这些空间。每次需占用大约30K。如果非正常退出,这些空间则 能自动收回。时间长了,就会出现上述现象。
解决的方法是,利用DOS的CHKDSK命令将这些空间收入文件,再删除*.CHK文件即可收回这些空间。
三、不能使用“RUN”命令的处理过程。
“RUN”(或“!”)命令可以使FoxBASE+不退出本系统而执行DOS命令。这是一个很有用的功能。它悬挂FoxBASE+系统,退回到DOS级工作。因此能完成许多FoxBASE+不能完成的功能。即使是FoxBASE+具有相同的功能,使用这一命令执行的速度却快许多。但是,执行该功能有两个条件,一是必须在FOX子目录下存在COMMAND.COM文件。使用DOS的PATH命令和FOX的SET PATH TO设置都无济于事。二是进入FOX前至少有403K的自由内存空间。
实际使用中,第一个条件是容易满足的。对于第二个条件应用一些技巧。根据笔者的使用有两种情况,对一般双软机使用中通常是将一级汉字驻留内存,这样空间显得紧张。DOS和dBASE-Ⅲ系统都介绍BUFFRES设置得越大则读写缓冲区越大,执行程序时会工作得越快。对于数据库软件,速度问题本身就是一个突出问题,因此普遍把BUFFERS值设置得较大。然而实际使用得知,FoxBASE+系统会自动调整缓冲区的大小,该设置对运行速度不产生影响;而它却对能否使用RUN命令影响较大。原因是一个缓冲区使DOS占用内存增加528字节,而FoxBASE+系统的可使用空间就减少528字节;对于640K内存机型,这几KB内存之差就能决定能否使用“RUN”命令。实践得知,当FILES=15时,BUFFERS应小于22方可使用。
对于内存1M的机型,一般将扩充内存用来建虚盘放字库,使用213汉字系统,这时一般不是不能用“RUN”命令的。原因是系统自带的213.BAT文件把打印模块,部分高点阵字库等在FoxBASE+系统极少使用的内容也调入了内存,使内存不够。解决的方法是将其213.BAT文件改为:
echo off
cls
c:
cd\213
if not exist d:hzk16 copy hzk16 d:
file3 d2
cccc
cv26
yx1
key
lx1
kwb
wbzx
cd\
echo on
这样,进入汉字系统后还有478K自由空间;从而不仅可以使用“RUN”命令,而且运行FoxBASE+程序也比以前快许多。
四、QUIT的意义
QUIT是FoxBASE+正常退出系统命令。有些用户不常使用该命令,这是不清楚它的功能所造成的。FoxBASE+系统的打印机输出是无缓冲区的直接输出,而磁盘文件的输出是经过缓冲区的输出。简单地说,使用了存盘命令,但实际上并不一定真正存到磁盘上。QUIT命令的第一个功能是将缓冲区的全部内容存盘,避免数据丢失。
其二是释放磁盘空间。前面谈到FoxBASE+系统与其它覆盖系统有一定区别,其它的覆盖系统只存在重复读盘,系统盘可加写保护,而该系统的2#盘是禁止加写保护的,其原因是它不仅重复读盘而且要重复写盘;它的写盘也与普通的文件存盘不一样,运行过程中可以直接查到系统2#盘上新建一个长度为“0”的文件,但实际上它要占用大约30K的空间。利用QUIT命令,其第二个作用就是释放这些被占用的空间,删除新建的文件。若非正常退出,人为删除该新建文件是不能回收磁盘空间的,只有用CHKDSK命令回收。
第三,系统为了节省内存,进入时是拆除了常驻的COMMAND.COM文件时,QUIT的第三个作用是释放自己所占用的内存空间,并装回COMMAND.COM文件。
当然,它还有一个功能就是关闭所有被打开的文件。
因此,QUIT命令具有“打扫战场”的作用,不能忽视它的使用。
注:该过程使用的软件是:DOS3.0、CCDOS4.0(或213H0、FoxBASE+2.1等。 (成都 冯建军)