在FOXBASE+中使用数组应注意的几个问题
例如执行下列语句:
PUBLIC AAA
DIME AAA(5)
则出现‘SYNTAX ERROR'的错误提示,而执行
PUBLIC AAA
AAA=5
DIME BBB(AAA)
则能正确执行。
2、数组间不能直接赋值。执行下列命令:
DIME AAA(3)
AAA(1)=1
AAA(2)="12345"
AAA(3)=5
DIME BBB(3)
BBB=AAA
通过执行LIST MEMO命令或按F7键查看内存变量,却得到BBB(1)=BBB(2)=BBB(3)=1的信息,数组BBB只取了数组AAA第一个分量的类型与内容,并没有达到预定效果。
3、数组不能重复定义。执行下列命令:
DIME AAA(5)
...
程序体,没有清除内存变量命令
...
DIME AAA(5)
则会出现‘SYNTAX ERROR”的错误提示。在实际工作的意义是不要把定义数组的命令放在循环体中,除非在重新执行循环体前将其清除。
4、在编制录入程序时,往往需要先将数据保存到数组中,然后再利用GATH命令传送到当前数据库当前记录中。这样在定义数组时,需根据数据库结构定义数组分量个数和类型,传送到数据库后,为了再次录入,还得重新将数组初始化,如果数组分量个数很多且类型不一的话,虽简单但十分繁琐。笔者通过实践,找到了一个较好的方法:利用与当前数据库相同结构但没有记录的数据库进行定义。
例如用数组AAA与数据库BBB进行数据交换,则用下列方法定义:
USE BBB
COPY STRU TO CCC
USE CCC
SCAT TO AAA
这样就非常迅速地完成了数组AAA的定义。在录入数据后,执行
USE BBB
GATH FROM AAA
完成数据传送后,再执行
USE CCC
SCAT TO AAA
即可将数组AAA重新初始化,既方便快速,又可避免因数据类型或数据宽度定义不当而引起错误。(王一军)