在FOXBASE+中使用数组应注意的几个问题 王一军 1995-11-17 1、数组不能定义成全局变量,只能做为局部变量使用。但反过来,全局变量可以用来定义数组的下标。 例如执行下列语句: 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重新初始化,既方便快速,又可避免因数据类型或数据宽度定义不当而引起错误。(王一军)