Futurebasic/语言/参考/begin record
✔ 外观 ✔ 标准 ✔ 控制台
begin record typeName recDefnBlock end record
2000年7月19日 (Release 3)
开始定义“真”记录类型(与使用dim record...dim end record语句定义的伪记录类型相对)。记录类型定义必须以end record语句结束。
begin record...end record块是非可执行的,因此您无法通过将其放在条件执行结构(如long if/end if)中来更改其效果。但是,您可以通过将其放在compile long if块中来有条件地包含或排除它。
在begin record...end record块中定义的记录类型是全局范围的,可以在块出现位置以下的任何位置使用。
| typeName | 是标识记录类型的名称。此名称在程序中所有已定义的记录类型中必须唯一。 | 
| recDefnBlock | 是一个或多个 dim语句的块。这些dim语句的语法与普通dim语句的语法相同。但是,这些dim语句不是声明变量,而是声明此类型记录中字段的名称和类型。字段名称不必对此类型记录唯一(也就是说,不同的记录类型可以使用与该记录类型相同的字段名称)。字段可以是任何数据类型,包括先前定义的记录类型。字段也可以是任何类型的元素数组。 | 
您也可以在记录定义块中使用以下“前导点”语法来声明“空”空间;也就是说,记录中的一些字节没有被任何字段名称标识
DIM .constant
...其中constant是整数字面量或符号常量名称(不带前导下划线字符)。这声明指定数量的字节为“无名”。
您也可以在字段名称定义后使用“分号”语法来指定此字段的开头与下一个字段的开头之间应跳过多少字节。您可以使用它来在记录中插入“无名”字节,或使字段在内存中重叠。有关分号语法的更多信息,请参见 dim语句。
使用begin record...end record定义记录类型后,它就可以像其他任何数据类型一样使用。这意味着
- 您可以将变量声明为类型typeName;
- 您可以将数组声明为类型typeName;
- 您可以将其他记录类型中的字段声明为类型typeName。
在end record语句以下的任何位置,您可以使用dim语句以及as关键字来声明类型typeName的变量、数组或字段。例如,如果您定义了一个名为Address的记录类型,那么您可以执行以下操作
dim myHouse as Address, yourHouse as Address dim relatives(15) as Address begin record EmployeeInfo dim 50 name$ dim 9 socSecNo$ dim 20 hobbies$[9] dim empAddress as Address end record
声明了特定记录类型的变量后,就可以使用“嵌入点”语法来引用记录中的各个字段。使用上面的例子
dim mySecretary as EmployeeInfo mySecretary.socSecNo$ = "456-78-9999"
当您使用伪记录数组时,无论表达式表示整个记录还是其一个字段,都始终在表达式的末尾写入数组下标。例如,如果我们有一个名为game的伪记录数组,那么game(7)是指数组中的元素#7。如果此记录类型有一个名为score的字段,那么我们将game(7)的score表示为
game.score(7) 'pseudo-record
示例
begin record StudentInfo dim 20 firstName$ dim 20 lastName$ dim 1 finalGrade$ end record dim myStudents(35) as StudentInfo 'This represents the final grade of myStudent #14: myStudents.finalGrade$(14)= "B"
真记录能够在每个记录中保存数组。这个特殊的嵌入式数组通过使用方括号(而不是括号)来指定单个元素来表示。方括号用于对子元素进行尺寸设置和访问。
示例
begin record StudentInfo dim 20 firstName$ dim 20 lastName$ dim grades[100] end record dim myStudents(35) as StudentInfo myStudents.grades[1](5) = 96
在本例的最后一行,学生号 5 的成绩元素号 1 被设置为 96。
无特殊备注。
 dim record...dim end record;  dim;  begin union;  sizeof;  offsetof