Zapíše záznam do relativního souboru nebo sekvenci bajtů do binárního souboru.
K zápisu dat do sekvenčního textového souboru použijte příkaz Print#, k zápisu dat do sekvenčního textového souboru s oddělovacími znaky příkaz Write#.
Syntaxe:
Put [#]fileNum, [recordNum|filePos], variable
Parametry:
fileNum: Celočíselný výraz určující soubor, do kterého chcete zapisovat.
recordNum, filePos: Pro relativní soubory (přístup Random) určuje číslo záznamu, který chcete zapsat.
Pro binární soubory (přístup Binary) určuje pozici bajtu, kde má zápis začít.
variable: Název proměnné, kterou chcete zapsat do souboru.
Poznámka pro relativní soubory: Pokud obsah této proměnné neodpovídá délce záznamu, která je určena v klauzuli Len příkazu Open, zaplní se mezera mezi koncem nově zapsaného záznamu a dalším záznamem existujícími daty ze souboru, do kterého zapisujete.
Poznámka pro binární soubory: Obsah proměnné se zapíše na určenou pozici a ukazatel souboru se přesune přímo za poslední bajt. Mezi záznamy nezůstává žádné místo.
Příklad:
Sub ExampleRandomAccess
Dim iNumber As Integer
Dim sText As Variant ' Musí být variant
Dim aFile As String
aFile = "C:\Users\ThisUser\data.txt"
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Seek #iNumber,1 ' Přesun na začátek
Put #iNumber,, "Toto je první řádek textu" ' Zaplnit řádek textem
Put #iNumber, , "Toto je druhý řádek textu"
Put #iNumber, , "Toto je třetí řádek textu"
Seek #iNumber,2
Get #iNumber, , sText
Print sText
Close #iNumber
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Get #iNumber, 2, sText
Put #iNumber, , "Toto je nový text"
Get #iNumber, 1, sText
Get #iNumber, 2, sText
Put #iNumber, 20, "Toto je text v záznamu 20"
Print Lof(#iNumber)
Close #iNumber
End Sub
Sub ExampleRandomAccess
Dim iNumber As Integer
Dim sText As Variant ' Musí být variant
Dim aFile As String
aFile = "~/data.txt"
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Seek #iNumber,1 ' Přesun na začátek
Put #iNumber, , "Toto je první řádek textu" ' Zaplnit řádek textem
Put #iNumber, , "Toto je druhý řádek textu"
Put #iNumber, , "Toto je třetí řádek textu"
Seek #iNumber,2
Get #iNumber, , sText
Print sText
Close #iNumber
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Get #iNumber, 2, sText
Put #iNumber, , "Toto je nový text"
Get #iNumber, 1, sText
Get #iNumber, 2, sText
Put #iNumber, 20, "Toto je text v záznamu 20"
Print Lof(#iNumber)
Close #iNumber
End Sub