共用方式為


Get 陳述式

從開啟的磁碟檔案讀取資料到 變數

語法

取得 [ # ] 檔案號、[ recnumber ]、 varname

Get 語句語法包含以下部分:

部分 描述
filenumber 必要。 任何有效的檔案編號
Recnumber 選用。 變體 ( 長的) 。 記錄號 (隨機 模式檔案) 或二 進位 模式檔案 (位元組號) 讀取開始的檔案。
varname 此為必要動作。 資料被讀取的有效變數名稱。

註解

使用 Get 讀取的資料通常會寫入 Put 檔案。 檔案中的第一個記錄或位元組位於位置 1,第二個記錄或位元組位於位置 2,依此類推。 如果省略 recnumber,則會讀取最後一個 GetPut語句 後的記錄或位元組, (或最後一個 Seek 函式指向的) 。 你必須包含分隔逗號,例如:

Get #4,,FileBuffer 

對於以 隨機 模式開啟的檔案,適用以下規則:

  • 若讀取資料長度小於 Open 語句 Len 子句所規定的長度,Get 會讀取記錄長度邊界的後續記錄。 一個記錄結束與下一個記錄開始之間的空間會填充檔案緩衝區的現有內容。 由於填充資料的數量無法確定,通常最好讓記錄長度與讀取資料長度相符。

  • 如果被讀取的變數是可變長度的字串, Get 會讀取包含該字串長度的 2 位元組描述符,然後讀取進入該變數的資料。 因此,Open 語句中 Len 子句指定的記錄長度必須比字串實際長度多至少 2 位元組。

  • 如果被讀取的變數是數值型別變體Get 讀取 2 位元組,分別識別變VarType,以及進入變數的資料。 例如,當讀取 VarType 3 的變體時,Get 讀取 6 個位元組:2 個位元組將該變體識別為 VarType 3 (長) ,以及 4 個位元組包含 Long 資料。 Open 陳述中 Len 子句所指定的記錄長度必須比實際儲存變數所需的位元組數多 2 位元組。

    注意事項

    使用 Get 陳述式從磁碟讀取 變體陣列 ,但你無法用 Get 讀取包含陣列的純量 變體 。 你也不能用 Get 來讀取磁碟上的物件。

  • 若讀取變數為 VarType 8 變體 (字串) ,Get 讀取 2 位元組識別 VarType、2 位元組表示字串長度,然後讀取字串資料。 Open 語句中 Len 子句指定的記錄長度必須至少比字串實際長度多 4 位元組。

  • 若讀取變數為動態陣列, Get 讀取長度為 2 加 8 的描述符,即 2 + 8 * NumberOfDimensionsOpen 陳述中 Len 子句所指定的記錄長度必須大於或等於讀取陣列資料與陣列描述符所需所有位元組的總和。 例如,當陣列寫入磁碟時,以下陣列宣告需要 118 位元組。

      Dim MyArray(1 To 5,1 To 10) As Integer 
    

    118 位元組的分布如下:描述符 (2 + 8 * 2) 18 位元組,) (5 * 10 * 2 100 位元組。

  • 如果讀取變數是固定大小的陣列, Get 只讀取資料。 不會讀取描述詞。

  • 如果被讀取的變數是其他類型的變數 (非變長字串或 變體) ,Get 只讀取變數資料。 Open 語句中 Len 子句所規定的記錄長度必須大於或等於讀取資料的長度。

  • Get reads 是 使用者定義的元素 ,就像每個元素單獨被讀取一樣,但元素間沒有填充。 在磁碟上,一個以 Put () 撰寫的使用者定義型態動態陣列,前方會加上一個長度為 2 加 8 乘以維度數的描述符,也就是 2 + 8 * NumberOfDimensionsOpen 語句中 Len 子句所指定的記錄長度必須大於或等於讀取各個元素所需的所有位元組總和,包括任何陣列及其描述符。

對於以 二進位 模式開啟的檔案,所有 隨機 規則皆適用,但:

  • 公開聲明中的條款不具效力。 從磁碟連續讀取 所有變數;也就是說,唱片間沒有填充。

  • 對於非使用者定義型別的陣列, Get 只讀取資料。 不會讀取描述詞。

  • 讀取可變長度的字串,這些字串不是使用者定義型別的元素,而不期待 2 位元組長度的描述符。 讀取的位元組數等於字串中已包含的字元數。 例如,以下語句會從 檔案編號 1 讀取 10 位元組:

      VarString = String(10," ") 
      Get #1,,VarString 
    
    

範例

這個範例使用 Get 陳述式將資料從檔案讀取到變數。 此範例假設 是一個 TESTFILE 包含五筆使用者定義類型記錄的檔案,是包含五筆使用者定義類型 Record的檔案。

Type Record ' Define user-defined type. 
 ID As Integer 
 Name As String * 20 
End Type 
 
Dim MyRecord As Record, Position ' Declare variables. 
' Open sample file for random access. 
Open "TESTFILE" For Random As #1 Len = Len(MyRecord) 
' Read the sample file using the Get statement. 
Position = 3 ' Define record number. 
Get #1, Position, MyRecord ' Read third record. 
Close #1 ' Close file. 

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應