Get 陳述式
將資料從開啟的磁片檔案讀入 變數。
語法
Get [ # ] filenumber, [ recnumber ], varname
Get語句語法包含下列部分:
部分 | 描述 |
---|---|
filenumber | 必要。 任何有效的檔案編號。 |
recnumber | 選用。 Variant (Long) 。 ) 開始讀取的二進位模式檔案) 或位元組編號 (隨機模式檔案記錄 (編號。 |
varname | 此為必要動作。 讀取資料的有效變數名稱。 |
註解
使用 Get 讀取的資料通常會寫入至 具有 Put的檔案。 檔案中的第一筆記錄或位元組位於位置 1,第二筆記錄或位元組位於位置 2,依此類推。 如果您省略recnumber,則會讀取最後一個 Get或Put語句之後的下一筆記錄或位元組 (或最後一個Seek函式所指向) 。 您必須包含分隔逗號,例如:
Get #4,,FileBuffer
針對以 隨機 模式開啟的檔案,適用下列規則:
如果讀取的資料長度小於Open語句的 Len子句中指定的長度,Get會讀取記錄長度界限上的後續記錄。 一筆記錄結尾與下一筆記錄開頭之間的間距會與檔案緩衝區的現有內容填補。 因為填補資料量無法以任何確定性來決定,所以通常最好讓記錄長度符合所讀取資料的長度。
如果要讀入的變數是可變長度字串, Get 會讀取包含字串長度的 2 位元組描述元,然後讀取進入變數的資料。 因此,Open語句中Len子句所指定的記錄長度必須至少大於字串的實際長度 2 個位元組。
如果要讀入的變數是數數值型別的Variant,Get會讀取識別VariantVarType的 2 個位元組,然後讀取進入變數的資料。 例如,讀取VarType 3 的Variant時,Get會讀取 6 個位元組:將Variant識別為VarType 3 的 2 個位元組 (Long) ,以及包含Long資料的 4 個位元組。 Open語句中Len子句所指定的記錄長度必須至少大於儲存變數所需的實際位元組數目 2 個位元組。
注意事項
使用Get語句從磁盤讀取Variant陣列,但您無法使用Get讀取包含陣列的純量Variant。 您也無法使用 Get 從磁片讀取物件。
如果要讀入的變數是VarType 8 (String) 的Variant,取得識別VarType的 2 個位元組、指出字串長度的 2 個位元組,然後讀取字串資料。 Open語句中Len子句所指定的記錄長度必須至少大於字串的實際長度 4 個位元組。
如果要讀入的變數是動態陣列, Get 會讀取長度等於 2 加上維度數目 8 倍的描述項,也就是 2 + 8 * NumberOfDimensions。 Open語句中Len子句所指定的記錄長度必須大於或等於讀取陣列資料和陣列描述項所需的所有位元組總和。 例如,當陣列寫入磁片時,下列陣列宣告需要 118 個位元組。
Dim MyArray(1 To 5,1 To 10) As Integer
118 個位元組的分佈方式如下:描述元 ()
2 + 8 * 2
為 18 個位元組,資料 (5 * 10 * 2
) 為 100 個位元組。如果要讀入的變數是固定大小的陣列, 取得 唯讀取資料。 未讀取描述項。
如果要讀入的變數是任何其他類型的變數, (不是可變長度字串或 Variant) , 則 Get 只會讀取變數資料。 Open語句中Len子句所指定的記錄長度必須大於或等於所讀取資料的長度。
取得使用者定義型別的讀取專案,就像是個別讀取一樣,不同之處在于元素之間沒有填補。 在磁片上,以 Put) 撰寫的使用者定義類型 (動態陣列會以長度等於 2 加上維度數目的 8 倍的描述項做為前置詞,也就是 2 + 8 * NumberOfDimensions。 Open語句中Len子句所指定的記錄長度必須大於或等於讀取個別元素所需的所有位元組總和,包括任何陣列及其描述項。
針對 以二進位 模式開啟的檔案,所有 隨機 規則都適用,但:
Open語句中的Len子句沒有作用。 取得 連續從磁片讀取所有變數;也就是說,記錄之間沒有邊框間距。
對於使用者定義型別中陣列以外的任何陣列, 取得 只會讀取資料。 未讀取描述項。
取得 讀取不是使用者定義型別元素的可變長度字串,而不需要預期 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 支援與意見反應。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應