Filer og mapper
Ofte må programmet innom mapper og filer. For programmering mot dokument
ordnes dette med indirekte hjelp av Apache OpenOffice sitt API.
Ellers har man i Basic egne funksjoner for direkte tilgang mot filsystemet.
Angivelse av filbane
Parameter "m" angir en bane. Det kan være absolutt (starter med roten, som i "C:\Window" eller "/usr/home" i UNIX) eller relativ (i forhold til den mappe Apache OpenOffice "står i", d.v.s. har som "current working directory"). Videre kan "m" inneholde ? for å angi at hvilket som helst tegn tillates i denne posisjon. Hvis "m" avsluttes med "*" betyr det at hva som helst tillates som avslutning.
Traversering av mappetre
Mapper er organisert i et tre. Med Dir(m,x) starter en traversering av det treet som starter i mappe m, som i eksempelet under:
Sub visFiler
Dim nesteFil As String
Dim alleFiler As String
alleFiler = ""
nesteFil = Dir("C:\", 0)
While nesteFil <> ""
alleFiler = alleFiler & Chr(13) & nesteFil ' legg inn linjeskift
nesteFil = Dir()
Wend
MsgBox alleFiler
End Sub
Dir() uten argument gir neste fil (eller mappe). Dir (m) gir første fil i Apache OpenOffice sin gjeldende mappe. Dir (m,0) ber om kun filer i m, Dir (m,16) ber om kun mapper i m. Vil en liste kun mapper kan en f.eks.:
Sub visMapper
Dim nesteMappe As String
Dim alleMapper As String
alleMapper = ""
nesteMappe = Dir("C:\", 16)
While nesteMappe <> ""
alleMapper = alleMapper & Chr(13) & nesteMappe
nesteMappe = Dir()
Wend
MsgBox AllDirs
End Sub
Operasjon mot mapper
- MkDir(m) oppretter m og eventuelle mellom-mapper som ikke fins
- RmDir(m) fjerner mappe "m" og tilliggende mapper og filer renskes bort
- FileCopy(fra, til) kopierer en fil
- Name OldName As NewName vil gi nytt navn
- Kill(m) fjerner en fil (ikke mappe)
- FileExists(f) er boolsk, True hvis f finnes
- getAttr(f) gir et Integer som avslører data om filen (1=readonly, 16=er mappe)
- setAttr(f,a) endrer f sitt attributt til a
- FileDateTime(f) gir sist filen ble endret
- FileLen(f) gir filens lengde (antall byte)
Operasjon mot fil
Skal en lese eller skrive en fil fins funksjonene:
- FreeFile: gir ledig "handle" (et Integer)
- Open f for Output as #h: Åpne fil med navn f for skriving (h er handle)
- Print #h, s: Skriver s til handle h
- Line Input #h, s: Legger neste linje fra fil med handle h, i s
- eof (h): boolsk, True hvis h er ferdig lest (nådd slutten)
- Close #h: Stenger h
Et eksempel er:
Dim FileNo As Integer
Dim CurrentLine As String
Dim Filename As String
Filename = "c:\klokeord.txt"
FileNo = FreeFile
Open Filename For Output As #FileNo
Print #FileNo, "Rosenborg er best"
Print #FileNo, "Molde er best"
Close #FileNo
Et eksempel på lesing av en fil:
Dim filNummer As Integer
Dim linje As String
Dim filNavn As String
Dim innhold as String
filnavn = "c:\visdomsord.txt"
filNummer = Freefile
Open filnavn For Input As filNummer
Do While not eof( filNummer )
Line Input #filNummer, linje
If linje <>"" then
innhold = innhold & linje & Chr(13)
end if
Loop
Close #filNummer
Msgbox ( innhold )
Annet
Vil en ha økt kompatibilitet med VBA anvendes "Compatibility mode" som under:
CompatibilityMode( True ) 'set mode
CompatibilityMode( False) 'clear mode
Dim bMode as Boolean
bMode = CompatibilityMode()
Content on this page is licensed under the Public Documentation License (PDL). |