Instrukcja Put#
Zapisuje rekord do pliku względnego lub sekwencję bajtów do pliku binarnego.
Użyj instrukcji Print#, aby zapisać dane do sekwencyjnego pliku tekstowego. Użyj instrukcji Write#, aby zapisać dane do sekwencyjnego pliku tekstowego z rozdzielającymi znakami.
Put [#]fileNum, [recordNum|filePos], variable
fileNum: dowolne wyrażenie całkowite, które definiuje plik, do którego chcesz zapisać.
recordNum, filePos: w przypadku plików względnych (plików o dostępie swobodnym) numer rekordu, który chcesz zapisać.
W przypadku plików binarnych (otwartych w trybie Binary) pozycja stanowi pozycję bajtu w pliku, od której należy rozpocząć zapis.
variable: nazwa zmiennej, którą chcesz zapisać do pliku.
Uwaga dotycząca plików względnych: Jeśli zawartość tej zmiennej ma inną długość niż długość rekordu określona w klauzuli Len instrukcji Open, miejsce pomiędzy końcem aktualnie dopisanego rekordu i następnym rekordem pozostaje wypełnione danymi już istniejącym w tym pliku.
Uwaga dotycząca plików binarnych: Zawartość zmiennej jest zapisywana w określonej pozycji, a wskaźnik pliku jest ustawiany bezpośrednio za ostatnim zapisanym bajtem. Pomiędzy rekordami nie jest pozostawiane wolne miejsce.
Sub ExampleRandomAccess
Dim iNumber As Integer
Dim sText As Variant ' Musi być typu variant
Dim aFile As String
aFile = "C:\Users\ThisUser\data.txt"
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Seek #iNumber,1 ' Pozycja rozpoczęcia
Put #iNumber, , "To jest pierwsza linia tekstu" ' Wypełnia linię tekstem
Put #iNumber, , "To jest druga linia tekstu"
Put #iNumber, , "To jest trzecia linia tekstu"
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, , "To jest nowy tekst"
Get #iNumber, 1, sText
Get #iNumber, 2, sText
Put #iNumber, 20, "To jest tekst w rekordzie 20"
Print Lof(#iNumber)
Close #iNumber
End Sub
Sub ExampleRandomAccess
Dim iNumber As Integer
Dim sText As Variant ' Musi być Variant
Dim aFile As String
aFile = "~/data.txt"
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Seek #iNumber,1 ' Pozycja na początku
Put #iNumber, , "To jest pierwsza linia tekstu" ' Wypełnia linię tekstem
Put #iNumber, , "To jest druga linia tekstu"
Put #iNumber, , "To jest trzecia linia tekstu"
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, , "To jest nowy tekst"
Get #iNumber, 1, sText
Get #iNumber, 2, sText
Put #iNumber, 20, "To jest tekst w rekordzie 20"
Print Lof(#iNumber)
Close #iNumber
End Sub