Модул
Съдържание
Индекс 🔎︎

# Оператор Open

Отваря канал за данни.

## Синтаксис:

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

## Параметри:

FileName: име и път на файла, който да бъде отворен. Ако се опитате да четете от несъществуващ файл (Access = Read), се показва съобщение за грешка. Ако се опитате да записвате в несъществуващ файл (Access = Write), се създава нов файл.

Mode: ключова дума, указваща режима на работа с файла. Валидните стойности са: Append (добавяне към файл с последователен достъп), Binary (данните могат да се четат и записват на ниво байт с Get и Put), Input (отваря канал за данни за четене), Output (отваря канал за данни за записване) и Random (за редактиране на файлове с произволен достъп).

IOMode: ключова дума, указваща вида на достъпа. Валидните стойности са: Read (само за четене), Write (само за запис), Read Write (и двете).

Protected: ключова дума за защита на файла след отварянето му. Валидните стойности са: Shared (файлът може да бъде отварян от други приложения), Lock Read (файл е защитен срещу четене), Lock Write (файлът е защитен срещу записване), Lock Read Write (дотъпът до файла се отказва).

FileNumber: целочислен израз със стойност от 0 до 511, представляваща номер на свободен канал за данни. Впоследствие можете да изпращате команди към този канал за данни, за да работите с файла. Файловият номер трябва да бъде определен с функцията FreeFile непосредствено преди оператора Open.

DatasetLength: Задава дължината на записите за файлове с произволен достъп.

За да променяте съдържанието на файл, той трябва да е отворен с оператора Open. Ако се опитате да отворите файл, който вече е отворен, се показва съобщение за грешка.

## Пример:

    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, "Това е ред с текст"

        Print #iNumber, "Това е още един ред с текст"

        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