Put 語句
將數據從 變數 寫入磁碟檔案。
語法
Put [ # ] filenumber, [ recnumber ], varname
Put 語句語法具有下列部分:
部分 | 描述 |
---|---|
filenumber | 必要。 任何有效的檔案編號。 |
recnumber | 選用。 Variant (Long) 。 記錄編號 (開始寫入時, 隨機 模式檔案) 或 (二進位 模式檔案) 位元組編號。 |
varname | 此為必要動作。 包含要寫入磁碟之數據的變數名稱。 |
註解
使用 Put 寫入的數據通常會從具有 Get 的檔案讀 取。
檔案中的第一筆記錄或位元組位於位置 1,第二筆記錄或位元組位於位置 2,依此類推。 如果您省略 recnumber,則會寫入最後 一個 Get 或 Put 語句之後的下一筆記錄或位元組,或最後一個 Seek 函式 所指向的位元組。 您必須包含分隔逗號,例如:
Put #4,,FileBuffer
針對以 隨機 模式開啟的檔案,適用下列規則:
如果所寫入數據的長度小於 Open 語句的 Len 子句中指定的長度,Put 會在記錄長度界限上寫入後續記錄。 一筆記錄結尾與下一筆記錄開頭之間的間距會與檔案緩衝區的現有內容填補。 因為填補數據量無法以任何確定性來決定,所以最好讓記錄長度符合所寫入數據的長度。 如果所寫入數據的長度大於 Open 語句的 Len 子句中指定的長度,就會發生錯誤。
如果要寫入的變數是可變長度字串, Put 會寫入包含字串長度的 2 位元組描述元,然後寫入變數。 Open 語句中 Len 子句所指定的記錄長度必須至少大於字元串的實際長度 2 個字節。
如果要寫入的變數是數值類型的Variant,Put 會寫入 2 個字節來識別 Variant 的 VarType,然後寫入變數。 例如,撰寫 VarType 3 的 Variant 時,Put 會寫入 6 個字節:將 Variant 識別為 VarType 3 的 2 個字節 (Long) ,以及包含 Long 數據的 4 個字節。 Open 語句中 Len 子句所指定的記錄長度必須至少大於儲存變數所需的實際位元組數目 2 個字節。
注意事項
使用 Put 語句將 Variant 陣列寫入磁碟,但您無法使用 Put 將包含數位的純量 Variant 寫入磁碟。 您也無法使用 Put 將物件寫入磁碟。
如果要寫入的變數是 VarType 8 (String) 的 Variant,Put 會寫入 2 個字節來識別 VarType,2 個字節表示字元串的長度,然後寫入字元串數據。 Open 語句中 Len 子句所指定的記錄長度必須至少大於字元串的實際長度 4 個字節。
如果要寫入的變數是動態數位, Put 會寫入長度等於維度數目 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 個字節。如果要寫入的變數是固定大小的數位, Put 只會寫入數據。 沒有描述項寫入磁碟。
如果要寫入的變數是任何其他類型的變數, (不是可變長度字串或 Variant) , 則 Put 只會寫入變數數據。 Open 語句中 Len 子句所指定的記錄長度必須大於或等於所寫入數據的長度。
將使用者定義型別的寫入專案,就像個別寫入一樣,不同之處在於元素之間沒有填補。 在磁碟上,以 Put 撰寫的使用者定義型別中的動態數位列會以長度等於 2 加上維度數目的 8 倍的描述項做為前置詞,也就是 2 + 8 * NumberOfDimensions。 Open 語句中 Len 子句所指定的記錄長度必須大於或等於寫入個別專案所需的所有位元組總和,包括任何陣列及其描述項。
針對 以二進位 模式開啟的檔案,所有 隨機 規則都會套用,但下列專案除外:
Open 語句中的 Len 子句沒有作用。 將 所有變數連續寫入磁碟;也就是說,記錄之間沒有邊框間距。
對於使用者定義型別中陣列以外的任何數位, Put 只會寫入數據。 未寫入描述項。
將 寫入不是使用者定義型別元素的可變長度字串放入,而不需要 2 位元組長度描述項。 寫入的位元組數目等於字串中的字元數。 例如,下列語句會將 10 個字節寫入檔案編號 1:
VarString$ = String$(10," ") Put #1,,VarString$
範例
這個範例會使用 Put 語句將數據寫入檔案。 用戶定義型別的五筆記錄會寫入檔案。
Type Record ' Define user-defined type.
ID As Integer
Name As String * 20
End Type
Dim MyRecord As Record, RecordNumber ' Declare variables.
' Open file for random access.
Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
For RecordNumber = 1 To 5 ' Loop 5 times.
MyRecord.ID = RecordNumber ' Define ID.
MyRecord.Name = "My Name" & RecordNumber ' Create a string.
Put #1, RecordNumber, MyRecord ' Write record to file.
Next RecordNumber
Close #1 ' Close file.
另請參閱
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。