Obsah
Rejstřík 🔎︎

# Příkaz Open

Otevře datový kanál.

### Syntaxe:

    Open pathname For mode [Access io] [locking] As [#]filenum [Len=recLen]

### Parametry:

pathname: Cesta a název souboru, který chcete otevřít. Pokud se pokusíte otevřít neexistující soubor (Access = Read), zobrazí se chybová zpráva. Pokud se pokusíte zapsat do neexistujícího souboru (Access = Write), vytvoří se nový soubor.

mode: Klíčové slovo určující režim souboru. Platné hodnoty: Append (připojení na konec sekvenčního souboru), Binary (k datům lze přistupovat po bajtech pomocí Get a Put), Input (otevře datový kanál pro čtení), Output (otevře datový kanál pro zápis) a Random (úprava relativních souborů).

io: Klíčové slovo definující typ přístupu. Platné hodnoty: Read (jen pro čtení), Write (jen pro zápis), Read Write (obojí).

locking: Klíčové slovo definující zabezpečení souboru po otevření. Platné hodnoty: Shared (soubor mohou otevřít i další aplikace), Lock Read (soubor je chráněn proti čtení), Lock Write (soubor je chráněn proti zápisu), Lock Read Write (zamezí přístupu k souboru).

filkenum: Celočíselný výraz od 0 do 511 určující číslo volného datového kanálu. Skrze datový kanál je možné předávat příkazy k přístupu k souboru. Číslo souboru musí být těsně před příkazem Open určeno funkcí FreeFile.

recLen: Nastaví délku záznamů při přístupu k souboru v režimu Random.

Upravovat je možné jen obsah souboru otevřeného příkazem Open. Pokud se pokusíte otevřít již otevřený soubor, zobrazí se chybová zpráva.

### Příklad:

      Sub ExampleWorkWithAFile
          Dim iNumber As Integer
          Dim sLine As String
          Dim aFile As String
          Dim sMsg As String
          aFile = "C:\Users\ThisUser\data.txt"
          iNumber = Freefile
          Open aFile For Output As #iNumber
          Print #iNumber, "Toto je řádek textu"
          Print #iNumber, "Toto je další řádek textu"
          Close #iNumber
          iNumber = Freefile
          Open aFile For Input As iNumber
          While Not eof(iNumber)
              Line Input #iNumber, sLine
              If sLine <>"" Then
                  sMsg = sMsg & sLine & chr(13)
              End If
          Wend
          Close #iNumber
          MsgBox sMsg
      End Sub

      Sub ExampleWorkWithAFile
          Dim iNumber As Integer
          Dim sLine As String
          Dim aFile As String
          Dim sMsg As String
          aFile = "~/data.txt"
          iNumber = Freefile
          Open aFile For Output As #iNumber
          Print #iNumber, "Toto je řádek textu"
          Print #iNumber, "Toto je další řádek textu"
          Close #iNumber
          iNumber = Freefile
          Open aFile For Input As iNumber
          While Not eof(iNumber)
              Line Input #iNumber, sLine
              If sLine <>"" Then
                  sMsg = sMsg & sLine & chr(13)
              End If
          Wend
          Close #iNumber
          MsgBox sMsg
      End Sub

Pokud příkaz Open zkusí otevřít soubory, k němuž nemá aktuální uživatel oprávnění pro čtení nebo zápis, nastane chyba I/O.

Související témata

Příkaz Close

Funkce FreeFile

Příkaz Input#

Příkaz Print#