Spis treści

# 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.

### Składnia:

    Put [#]fileNum, [recordNum|filePos], variable

### Parametry:

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.

### Przykład:

      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

Tematy pokrewne

Instrukcja Close

Instrukcja Get

Instrukcja Open