跳轉到內容

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

語言參考

華夏公益教科書