跳转到内容

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

语言参考

华夏公益教科书