关于结构扩展文件的自动生成

Author: 四川 郑直 Date: 1996-11-22

        1.DBFSTR串定义中字段名'FIELD-LEN'和'FIELD-DEC'均只有九个字符,其后面应再加上一个回车符CHR(13),光标才能从CREAT TEMP界面的字段名域移入类型域并正确续用其后的字符输入,否则不能生成正确的结构扩展库文件。
        2.Keyboard为FoxBase提供的命令而非Keyboard()函数。
        另外,CREAT界面中类型域既可以用类型字符串首字符“C、N、D、L、M”直接选择,也可以用适当数量(默认类型排列的顺序数减一)的空格符CHR(32)加回车符选择;“N”型字段的零小数位可以不输,即原串定义的“0”可不要;字段类型为默认“C”型时可直接回车;执行Keyboard命令之前宜先执行Clea type命令以清除键盘缓冲区。
        由于使用现有的结构扩展文件的快速响应和CREAT交互式界面的不友好性,这种方法只适宜作为一种补救性的设计措施。若考虑到有可能无任何现有库利用的情况,建议应尽可能自备结构扩展文件。的确需要自动生成时宜在应用程序的初始化阶段完成为好。
        下面提供一个完整的结构扩展文件自动生成子程序,定义串使用空格符加回车符选择字段类型,可指定工作区和结构扩展文件名。
        程序在汉字FoxBase+2.10系统调试通过。
        *程序名称:EXTDBF.PRG
        *功能:自动生成结构扩展文件
        *入口参数:AREA__<expC>指定工作区号(0~10)
        *DBFNAME__<expC>指定结构扩展文件名
        *调用方式:DO EXTDBF WITH AREA,DBFNAME
        1  PARA AREA,DBFNAME
        2  SET TALK OFF
        3  SET ECHO OFF
        4  SET SAFE OFF
        5  SET BELL OFF
        6  SET STAT OFF
        7  SET SCOR OFF
        8  INSTRING="FIELD-NAME"+CHR(13)+"10"+CHR(13);
        +"FILED-TYPE"+CHR(13)+"1"+CHR(13);
        +"FILED-LEN"+CHR(13)+CHR(32)+CHR(13)+"3"+CHR(13)+CHR(13);
        +"FILED-DEC"+CHR(13)+CHR(32)+CHR(13)+"3"+CHRR(13)+CHR(13);
        +CHR(13)+CHR(13)+CHR(13)
        9  CLEA TYPE
        10 KEYB (INSTRING)
        11 OLD-AREA=LTRI(STR(SELE()))
        12 SELE &AREA
        13 CREA &DBFNAME
        14 SELE &OLD-AREA
        15 RETU