Filer og mapper

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


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).



Personal tools