跳轉至內容

Futurebasic/語言/參考/begin record

來自華夏公益教科書,自由的教科書

開始記錄

[編輯 | 編輯原始碼]

✔ 外觀 ✔ 標準 ✔ 控制檯

begin record typeName
  recDefnBlock
end record

2000 年 7 月 19 日(版本 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

語言參考

華夏公益教科書