Modul
Indhold
Indholdsfortegnelse 🔎︎

# Open-udtryk

Åbner en datakanal.

## Syntaks:

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

## Parametre:

Filnavn: Navn og sti på den fil, du vil åbne. Hvis du forsøger at læse en fil, som ikke eksisterer (adgang = læserettighed), kommer en fejlmeddelelse frem. Hvis du forsøger at skrive til en fil, som ikke eksisterer (adgang = skriverettighed), oprettes der en ny fil.

Mode: Nøgleord som angiver filens tilstand. Gyldige værdier: Append (tilføj til sekventiel fil), binary (data kan tilgås af bytes ved brug af Get og Put), Input (åbner datakanal for læsning), Output (åbner datakanal for skrivning), og Random (redigerer relative filer).

IOMode: Nøgleord, som definerer adgangstypen. Gyldige værdier: Read (læs-kun), Write (skriv-kun), Read Write (begge).

Protected: Nøgleord som definerer sikkerhedsstatus for en fil efter åbning. Gyldige værdier: Shared (fil kan åbnes af andre programmer), Lock Read (fil er beskyttet imod læsning), Lock Write (fil er beskyttet imod skrivning), Lock Read Write (nægter filadgang).

FileNumber: Hvilket som helst heltalsudtryk mellem 0 og 511 der indiker nummeret på en fri datakanal. Du kan så passere kommandoer gennem datakanalen for at tilgå filen. Filtallet skal bestemmes af funktionen FreeFile straks før sætningen Open.

DatasetLength: For filer med vilkårlig adgang, sæt længden af dataposterne.

Du kan kun ændre indholdet af en fil, som blev åbnet med Open-sætningen. Hvis du forsøger at åbne en fil der allerede er åbnet, vil en fejlmeddelelse fremkomme.

## Eksempel:

    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, "Dette er en linje tekst"
        Print #iNumber, "Dette er en anden tekstlinje"
        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