Съдържание

# Оператор Open

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

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

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

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

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

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

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

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

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

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

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

### Пример:

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

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

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

Теми, свързани с показаната

Оператор Close

Функция FreeFile

Оператор Input#

Оператор Print#