Modul
Obsah
Index 🔎︎

# Příkaz Open

Otevře datový kanál.

## Syntaxe:

    Open FileName As String [For Mode] [Access IOMode] [Protected] As [#]FileNumber As Integer [Len = DatasetLength]

## Parametry:

FileName: Název a cesta 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ů).

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

Protected: Klíčové slovo definující bezpečnostní stav 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řístup k souboru).

FileNumber: 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.

DatasetLength: Pro relativní soubory vrací délku určitého záznamu.

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:\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