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