Foxpro中MEMO字段的容量有多大

Author: 赵彦斌 Date: 1997-01-01

  MEMO字段是Foxpro最常用的字段之一,其大小可变,且能存放任何类型的数据,如文本、图象、内存变量、数组、窗口变量等。实际工作中,通常要将多种DOS文件、大数据及多种图象存于MEMO字段,并通过Foxpro提供的对MEMO字段操作的命令或函数对其存取。然而,在使用MEMO字段过程中经常出现大于64K的数据被截断的现象,使人以为MEMO字段只能存小于64K的数据。那么,MEMO字段到底能存多大的数据呢?
  分析存放MEMO字段内容的.fpt文件的结构可以发现,.fpt文件里每个MEMO字段的开头有两个4字节的数据,第一个4字节数据表示MEMO字段的类型;第二个4字节数据表示该MEMO字段的字节数,因此,理论上MEMO字段的最大长度:16进制表示为FFFFFFFF,即16的8次方减1,10进制为4,294,967,295,即4G。也就是说,在磁盘空间允许的情况下,Foxpro中每个MEMO字段可存储多达4G的数据或图象。
  那么,为什么大数据进入MEMO字段后出现了被截断成小于64K的现象呢?分析工作中使用大于64K数据的情况后得知,导致错误的原因是使用存取大数据的方法不正确。Foxpro提供了多种方式存储MEMO字段,如可使用内存变量的方式,如REPLACE命令或SCATTER MEMVAR MEMO命令等;也可使用文件传输的方式,如APPEND MEMO XX FROM命令等存储MEMO字段。在使用内存变量方式存取MEMO字段时,由于Foxpro规定内存变量的长度必须小于64K,当数据大于64K时,内存变量便将大于64K的数据截断成小于64K的数据,结果导致了上述错误。因此,在对MEMO字段存入大于64K的数据时,必须使用文件传输方式APPEND MEMO XX FROM (文件名)来实现。