Difference between revisions of "NL/Documentation/BASIC Guide/Files and Directories (Runtime Library)"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Created page with "{{NL/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=NL/Documentation/BASIC Guide/Date and Time (Runtime Library) |NextPage=NL/Documentation/B...")
 
m (Lezen van tekstbestanden)
 
(13 intermediate revisions by 2 users not shown)
Line 6: Line 6:
 
|runtime=block
 
|runtime=block
 
}}
 
}}
{{DISPLAYTITLE:Bestanden en mappen ({{OOo}} Runtime-bibliotheek)}}
+
{{DISPLAYTITLE:Bestanden en mappen ({{AOo}} Runtime-bibliotheek)}}
 
__NOTOC__
 
__NOTOC__
Werken met bestanden is een van de basistaken van een toepassing. De {{OOo}} API verschaft een groot scala aan objecten waarmee u kantoordocumenten kunt creëren, openen en aanpassen. Deze worden in detail gepresenteerd in [[Documentation/BASIC Guide/API Intro|Introductie voor de {{OOo}} API]]. Niettegenstaande dit, in sommige gevallen zult u direct het bestandssysteem moeten benaderen, zoeken in directory's of tekstbestanden bewerken. De runtime bibliotheek van {{OOo}} BASIC verschaft verscheidene fundamentele functies voor deze taken.
+
Werken met bestanden is een van de basistaken van een toepassing. De {{AOo}} API verschaft een groot scala aan objecten waarmee u kantoordocumenten kunt creëren, openen en aanpassen. Deze worden in detail gepresenteerd in [[Documentation/BASIC Guide/API Intro|Introductie voor de {{AOo}} API]]. Niettegenstaande dit, in sommige gevallen zult u direct het bestandssysteem moeten benaderen, zoeken in directory's of tekstbestanden bewerken. De runtime bibliotheek van {{AOo}} BASIC verschaft verscheidene fundamentele functies voor deze taken.
  
{{Documentation/Note|Sommige DOS-specifieke bestands- en mapfuncties worden niet langer verschaft in {{OOo}}, of hun functie is slechts beperkt. Bijvoorbeeld: ondersteuning voor de functies <tt>ChDir</tt>, <tt>ChDrive</tt> en <tt>CurDir</tt> wordt niet verschaft. Sommige DOS-specifieke eigenschappen wordne niet langer gebruikt in functies die eigenschappen van bestanden verwachten als parameters (bijvoorbeeld om onderscheid te maken tussen verborgen en systeembestanden). Deze wijziging was nodig om het grootst mogelijke niveau van platformonafhankelijkheid te bereiken voor {{OOo}}.}}
+
{{Note|Sommige DOS-specifieke bestands- en mapfuncties worden niet langer verschaft in {{AOo}}, of hun functie is slechts beperkt. Bijvoorbeeld: ondersteuning voor de functies <tt>ChDir</tt>, <tt>ChDrive</tt> en <tt>CurDir</tt> wordt niet verschaft. Sommige DOS-specifieke eigenschappen worden niet langer gebruikt in functies die eigenschappen van bestanden verwachten als parameters (bijvoorbeeld om onderscheid te maken tussen verborgen en systeembestanden). Deze wijziging was nodig om het hoogst mogelijke niveau van platformonafhankelijkheid te bereiken voor {{AOo}}.}}
  
 
== Beheren van bestanden ==
 
== Beheren van bestanden ==
Line 16: Line 16:
 
=== modus Compatibiliteit ===
 
=== modus Compatibiliteit ===
  
The <tt>CompatibilityMode</tt> statement and function provide greater compatibility with VBA, by changing the operation of certain functions. The effect on any particular function is described with that function, below.
+
Het argument en de functie <tt>CompatibilityMode</tt> verschaffen grotere compatibiliteit met VBA, door de werking van bepaalde functies te wijzigen. Het effect on een bepaalde functie wordt, hieronder, bij die functie beschreven.
  
As a statement, <tt>CompatibilityMode( value )</tt> takes a Boolean value to set or clear the mode. As a function, <tt>CompatibilityMode()</tt> returns the Boolean value of the mode.
+
Als een argument krijgt <tt>CompatibilityMode( waarde )</tt> een Booleaanse waarde om de modus in te stellen of uit te schakelen. Als een functie geeft <tt>CompatibilityMode()</tt> de Booleaanse waarde van de modus terug.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
CompatibilityMode( True ) 'set mode
+
CompatibilityMode( True ) 'modus instellen
CompatibilityMode( False) 'clear mode
+
CompatibilityMode( False) 'modus uitschakelen
  
Dim bMode as Boolean
+
Dim bModus as Boolean
bMode = CompatibilityMode()
+
bModus = CompatibilityMode()
</source>
+
</syntaxhighlight>
  
=== Searching Through Directories ===
+
=== Zoeken in mappen ===
  
The <tt>Dir</tt> function in {{OOo}} Basic is responsible for searching through directories for files and sub-directories. When first requested, a string containing the path of the directories to be searched must be assigned to <tt>Dir</tt> as its first parameter. The second parameter of <tt>Dir</tt> specifies the file or directory to be searched for. {{OOo}} Basic returns the name of the first directory entry found. To retrieve the next entry, the <tt>Dir</tt> function should be requested without parameters. If the <tt>Dir</tt> function finds no more entries, it returns an empty string.
+
De functie <tt>Dir</tt> in {{AOo}} BASIC is verantwoordelijk voor het zoeken door mappen naar bestanden en sub-mappen. Bij het eerste verzoek dient een tekenreeks, die het pad bevat naar de mappen die moeten worden doorzocht, te worden toegewezen aan <tt>Dir</tt> als diens eerste parameter. De tweede parameter van <tt>Dir</tt> specificeert het bestand of de map waarnaar moet worden gezocht. {{AOo}} BASIC geeft de naam weer van de eerste map die wordt gevonden. Om het volgende item te vinden, zou de functie <tt>Dir</tt> moeten worden gevraagd zonder parameters. Als de functie <tt>Dir</tt> geen item meer vindt, geeft het een lege tekenreeks weer.
  
The following example shows how the <tt>Dir</tt> function can be used to request all files located in one directory. The procedure saves the individual file names in the <tt>AllFiles</tt> variable and then displays this in a message box.
+
Het volgende voorbeeld toont hoe de functie <tt>Dir</tt>kan worden gebruikt om alle bestanden, die zich bevinden in één map, kunnen worden opgevraagd. De procedure slaat de individuele bestandsnamen op in de variabele <tt>AlleBestanden</tt> en geeft die dan weer in een berichtenvenster.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Sub ShowFiles
+
Sub BestandenTonen
   Dim NextFile As String
+
   Dim VolgendBestand As String
   Dim AllFiles As String
+
   Dim AlleBestanden As String
  
   AllFiles = ""
+
   AlleBestanden = ""
   NextFile = Dir("C:\", 0)
+
   VolgendBestand = Dir("C:\", 0)
  
   While NextFile <> ""
+
   While VolgendBestand <> ""
     AllFiles = AllFiles & Chr(13) &  NextFile
+
     AlleBestanden = AlleBestanden & Chr(13) &  VolgendBestand
     NextFile = Dir
+
     VolgendBestand = Dir
 
   Wend
 
   Wend
  
   MsgBox AllFiles
+
   MsgBox AlleBestanden
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
The <tt>0</tt> (zero) used as the second parameter in the <tt>Dir</tt> function ensures that <tt>Dir</tt> only returns the names of files; directories are ignored. The following parameters can be specified here:
+
De <tt>0</tt>, gebruikt in de tweede parameter in de functie <tt>Dir</tt>, zorgt er voor dat <tt>0</tt> alleen de namen van bestanden weergeeft en mappen worden genegeerd. De volgende parameters kunnen hier worden gespecificeerd:
  
* <tt>0</tt> : returns normal files
+
* <tt>0</tt> : geeft normale bestanden weer
* <tt>16</tt> : sub-directories
+
* <tt>16</tt> : sub-mappen
  
The following example is virtually the same as the preceding example, but the <tt>Dir</tt> function transfers the value 16 as a parameter, which returns the sub-directories of a folder rather than the file names.
+
Het volgende voorbeeld is nagenoeg hetzelfde als het voorgaande voorbeeld, maar de functie <tt>Dir</tt> transporteert de waarde 16 als een parameter, die de sub-mappen van een map laat weergeven in plaats van de bestandsnamen.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Sub ShowDirs
+
Sub MappenTonen
   Dim NextDir As String
+
   Dim VolgendeMap As String
   Dim AllDirs As String
+
   Dim AlleMappen As String
  
   AllDirs = ""
+
   AlleMappen = ""
   NextDir = Dir("C:\", 16)
+
   VolgendeMap = Dir("C:\", 16)
  
   While NextDir <> ""
+
   While VolgendeMap <> ""
     AllDirs = AllDirs & Chr(13) &  NextDir
+
     AlleMappen = AlleMappen & Chr(13) &  VolgendeMap
     NextDir = Dir
+
     VolgendeMap = Dir
 
   Wend
 
   Wend
  
   MsgBox AllDirs
+
   MsgBox AlleMappen
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
{{Documentation/VBAnote|When requested in {{OOo}} Basic, the <tt>Dir</tt> function, using the parameter 16, only returns the sub-directories of a folder. In VBA, the function also returns the names of the standard files so that further checking is needed to retrieve the directories only. When using the <tt>CompatibilityMode ( true )</tt> function, {{OOo}} Basic behaves like VBA and the Dir function, using parameter 16, returns sub-directories and standard files.}}
+
{{Documentation/VBAnote|Indien gevraagd in {{AOo}} Basic, geeft de functie <tt>Dir</tt>, die de parameter 16 gebruikt, alleen de sub-mappen van een map weer. In VBA geeft de functie ook de namen van de normale bestanden weer zodat nadere controle is vereist om alleen de mappen op te halen. Bij het gebruiken van de functie <tt>CompatibilityMode ( true )</tt> gedraagt {{AOo}} BASIC zich als VBA en de functie Dir, die parameter 16 gebruikt, geeft sub-mappen en namen van normale bestanden weer.}}
  
{{Documentation/VBAnote|The options provided in VBA for searching through directories specifically for files with the '''concealed''', '''system file''', '''archived''', and '''volume name''' properties does not exist in {{OOo}} Basic because the corresponding file system functions are not available on all operating systems.}}
+
{{Documentation/VBAnote|De in VBA verschafte opties voor het zoeken door mappen, specifiek naar bestanden met de eigenschappen '''verborgen''', '''systeembestand''', '''archief''' en '''volumenaam''', bestaat niet in {{AOo}} BASIC omdat de overeenkomende functies voor het bestandssysteem niet beschikbaar zijn op alle besturingssystemen.}}
  
{{Documentation/VBAnote|The path specifications listed in <tt>Dir</tt> may use the * and ? place holders in both VBA and {{OOo}} Basic. In {{OOo}} Basic, the * place holder may however only be the last character of a file name and/or file extension, which is not the case in VBA. }}
+
{{Documentation/VBAnote|De specificaties voor het pad zoals vermeld in <tt>Dir</tt> mogen de tijdelijke plaatsaanduidingen * en ? gebruiken in zowel VBA als in {{AOo}} BASIC. In {{AOo}} BASIC kan de tijdelijke plaatsaanduiding * echter slechts het laatste teken van een bestandsnaam en/of bestandsextensie zijn, wat niet het geval is in VBA. }}
  
=== Creating and Deleting Directories ===
+
=== Maken en verwijderen van mappen ===
  
{{OOo}} Basic provides the <tt>MkDir</tt> function for creating directories.
+
{{AOo}} BASIC verschaft de functie <tt>MkDir</tt> voor het maken van mappen.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
MkDir ("C:\SubDir1")
 
MkDir ("C:\SubDir1")
</source>
+
</syntaxhighlight>
  
This function creates directories and sub-directories. All directories needed within a hierarchy are also created, if required. For example, if only the <tt>C:\SubDir1</tt> directory exists, then a call
+
Deze functie maakt mappen en sub-mappen. Alle benodigde mappen binnen een hiërarchie worden, indien vereist, ook gemaakt. Bijvoorbeeld: als alleen de map <tt>C:\SubDir1</tt> bestaat, dan maakt de aanroep
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
MkDir ("C:\SubDir1\SubDir2\SubDir3\")
 
MkDir ("C:\SubDir1\SubDir2\SubDir3\")
</source>
+
</syntaxhighlight>
  
creates both the <tt>C:\SubDir1\SubDir2</tt> directory and the <tt>C:\SubDir1\SubDir2\SubDir3</tt> directory.  
+
zowel de map <tt>C:\SubDir1\SubDir2</tt> als de map <tt>C:\SubDir1\SubDir2\SubDir3</tt>.  
  
The <tt>RmDir</tt> function deletes directories.
+
De functie <tt>RmDir</tt> verwijdert mappen.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
RmDir ("C:\SubDir1\SubDir2\SubDir3\")
 
RmDir ("C:\SubDir1\SubDir2\SubDir3\")
</source>
+
</syntaxhighlight>
 +
Als de map mappen of bestanden bevat worden deze '''ook verwijderd'''. U zou daarom voorzichtig moeten zijn met het gebruik van <tt>RmDir</tt>.
  
If the directory contains sub-directories or files, these are '''also deleted.''' You should therefore be careful when using <tt>RmDir</tt>.
+
{{Documentation/VBAnote|In VBA hebben de functies <tt>MkDir</tt> en <tt>RmDir</tt> alleen invloed op de huidige map. Aan de andere kant kunnen <tt>MkDir</tt> en <tt>RmDir</tt> in {{AOo}} BASIC worden gebruikt om niveaus van mappen te maken of te verwijderen.}}
  
{{Documentation/VBAnote|In VBA, the <tt>MkDir</tt> and <tt>RmDir</tt> functions only relate to the current directory. In {{OOo}} Basic on the other hand, <tt>MkDir</tt> and <tt>RmDir</tt> can be used to create or delete levels of directories.}}
+
{{Documentation/VBAnote|In VBA produceert <tt>RmDir</tt> een foutbericht als een map een bestand bevat. In {{AOo}} BASIC worden de map '''en alle bestanden daarin''' verwijderd. Als u de functie <tt>CompatibilityMode ( true )</tt> gebruikt, zal {{AOo}} BASIC zich gedragen zoals VBA.}}
  
{{Documentation/VBAnote|In VBA, <tt>RmDir</tt> produces an error message if a directory contains a file. In {{OOo}} Basic, the directory '''and all its files''' are deleted. If you use the <tt>CompatibilityMode ( true )</tt> function, {{OOo}} Basic will behave like VBA.}}
+
=== Kopiëren, hernoemen, verwijderen en bestaan controleren van bestanden ===
  
=== Copying, Renaming, Deleting and Checking the Existence of Files ===
+
De volgende aanroep maakt een kopie van het bestand <tt>Bron</tt> met de naam <tt>Doel</tt>:
  
The following call creates a copy of the <tt>Source</tt> file under the name of <tt>Destination</tt>:
+
<syntaxhighlight lang="oobas">
 +
FileCopy(Bron, Doel)
 +
</syntaxhighlight>
  
<source lang="oobas">
+
Met behulp van de volgende functie kunt u het bestand <tt>OudeNaam</tt> hernoemen naar <tt>NieuweNaam</tt>. De syntaxis met het sleutelwoord <tt>As</tt> en het feit dat er geen komma wordt gebruikt gaat terug naar de wortels van de taal BASIC.
FileCopy(Source, Destination)
+
</source>
+
  
With the help of the following function you can rename the <tt>OldName</tt> file with <tt>NewName</tt>. The <tt>As</tt> keyword syntax, and the fact that a comma is not used, goes back to the roots of the Basic language.
+
<syntaxhighlight lang="oobas">
 +
Name OudeNaam As NieuweNaam
 +
</syntaxhighlight>
  
<source lang="oobas">
+
De volgende aanroep verwijdert het bestand <tt>Bestandsnaam</tt>. Gebruik de functie <tt>RmDir</tt> als u de gehele map (inclusief de bestanden daarin) wilt verwijderen.
Name OldName As NewName
+
</source>
+
  
The following call deletes the <tt>Filename</tt> file. If you want to delete directory (including its files) use the <tt>RmDir</tt> function.
+
<syntaxhighlight lang="oobas">
 +
Kill(Bestandsnaam)
 +
</syntaxhighlight>
  
<source lang="oobas">
+
De functie <tt>FileExists</tt> kan worden gebruikt om te controleren of een bestand bestaat:
Kill(Filename)
+
</source>
+
  
The <tt>FileExists</tt> function can be used to check whether a file exists:
+
<syntaxhighlight lang="oobas">
 
+
If FileExists(Bestandsnaam) Then  
<source lang="oobas">
+
   MsgBox "Bestand bestaat."
If FileExists(Filename) Then  
+
   MsgBox "file exists."
+
 
End If
 
End If
</source>
+
</syntaxhighlight>
  
=== Reading and Changing File Properties ===
+
=== Lezen en wijzigen van eigenschappen van bestanden ===
  
When working with files, it is sometimes important to be able to establish the file properties, the time the file was last changed and the length of the file.  
+
Bij het werken met bestanden, is het soms belangrijk om in staat te zijn de eigenschappen van bestanden vast te stellen, de tijd dat het bestand het laatst werd gewijzigd en de lengte van het bestand.
  
The following call returns some properties about a file.
+
De volgende aanroep geeft enkele eigenschappen van het bestand weer.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim Attr As Integer
 
Dim Attr As Integer
Attr = GetAttr(Filename)
+
Attr = GetAttr(Bestandsnaam)
</source>
+
</syntaxhighlight>
  
The return value is provided as a bit mask in which the following values are possible:  
+
De teruggegeven waarde wordt verschaft als een bit-masker waarin de volgende waarden mogelijk zijn:  
  
* 1 : read-only file
+
* 1 : bestand is Alleen-lezen
* 16 : name of a directory
+
* 16 : naam van een map
  
The following example determines the bit mask of the <tt>test.txt</tt> file and checks whether this is read-only whether it is a directory. If neither of these apply, <tt>FileDescription</tt> is assigned the "normal" string.
+
Het volgende voorbeeld bepaalt het bit-masker van het bestand <tt>test.txt</tt> en controleert of het Alleen-lezen is of dat het een map is. Als geen van beide van toepassing is, wordt de tekenreeks "normaal" toegewezen aan <tt>BestandsOmschrijving</tt>.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Dim FileMask As Integer
+
Dim BestandsMasker As Integer
Dim FileDescription As String
+
Dim BestandsOmschrijving As String
  
FileMask = GetAttr("test.txt")
+
BestandsMasker = GetAttr("test.txt")
  
If (FileMask AND 1) > 0 Then
+
If (BestandsMasker AND 1) > 0 Then
   FileDescription = FileDescription & " read-only "
+
   BestandsOmschrijving = BestandsOmschrijving & " alleen-lezen "
 
End IF
 
End IF
  
If (FileMask AND 16) > 0 Then
+
If (BestandsMasker AND 16) > 0 Then
   FileDescription = FileDescription & " directory "
+
   BestandsOmschrijving = BestandsOmschrijving & " map "
 
End IF
 
End IF
  
If FileDescription = "" Then
+
If BestandsOmschrijving = "" Then
   FileDescription = " normal "
+
   BestandsOmschrijving = " normaal "
 
End IF
 
End IF
  
MsgBox FileDescription
+
MsgBox BestandsOmschrijving
</source>
+
</syntaxhighlight>
  
{{Documentation/VBAnote|The flags used in VBA for querying the '''concealed''', '''system file,archived''' and '''volume name''' file properties are not supported in {{OOo}} Basic because these are Windows-specific and are not or are only partially available on other operating systems.}}
+
{{Documentation/VBAnote|De in VBA gebruikte vlaggen voor het bevragen van de eigenschappen van bestanden '''verborgen''', '''systeembestand''', '''archief''' en '''volumenaam''' worden niet ondersteund in {{AOo}} BASIC omdat zij specifiek voor Windows zijn en niet of slechts gedeeltelijk aanwezig zijn op andere besturingssystemen.}}
  
The <tt>SetAttr</tt> function permits the properties of a file to be changed. The following call can therefore be used to provide a file with read-only status:
+
De functie <tt>SetAttr</tt> maakt het mogelijk de eigenschappen van een bestand te wijzigen. De volgende aanroep kan daarom worden gebruikt om een bestand te voorzien van de status Alleen-lezen:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
SetAttr("test.txt", 1)
 
SetAttr("test.txt", 1)
</source>
+
</syntaxhighlight>
  
An existing read-only status can be deleted with the following call:
+
Een bestaande status Alleen-lezen kan wordne verwijderd met de volgende aanroep:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
SetAttr("test.txt", 0)
 
SetAttr("test.txt", 0)
</source>
+
</syntaxhighlight>
  
The date and time of the last amendment to a file are provided by the <tt>FileDateTime</tt> function. The date is formatted here in accordance with the country-specific settings used on the system.
+
De datum en tijd van de laatste wijziging in een bestand worden verschaft door de functie <tt>FileDateTime</tt>. De datum wordt hier opgemaakt overeenkomstig de land-specifieke instellingen die worden gebruikt op het systeem.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
FileDateTime("test.txt")  ' Provides date and time of the last file amendment.
+
FileDateTime("test.txt")  ' Geeft de datum en tijd van de laatste wijziging aan
</source>
+
                          ' het bestand.
 +
</syntaxhighlight>
  
The <tt>FileLen</tt> function determines the length of a file in bytes (as long integer value).
+
De functie <tt>FileLen</tt> bepaalt de lengte van een bestand in bytes (als long integer waarde).
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
FileLen("test.txt")      ' Provides the length of the file in bytes
+
FileLen("test.txt")      ' Geeft de lengte van het bestand in bytes
</source>
+
</syntaxhighlight>
  
== Writing and Reading Text Files ==
+
== Schrijven en lezen van tekstbestanden ==
  
{{OOo}} Basic provides a whole range of methods for reading and writing files. The following explanations relate to working with text files ('''not''' text documents).
+
{{AOo}} BASIC verschaft een breed scala van methoden om bestanden te lezen en te schrijven. De volgende uitleg heeft betrekking op het werken met tekstbestanden ('''niet''' tekstdocumenten).
  
=== Writing Text Files ===
+
=== Schrijven van tekstbestanden ===
  
Before a text file is accessed, it must first be opened. To do this, a free '''file handle''' is needed, which clearly identifies the file for subsequent file access.
+
Voordat een bestand kan worden benaderd, moet het eerst worden geopend. Om dit te doen is een '''vrije bestand behandelaar''' nodig, die duidelijk het bestand aanduidt voor aansluitende toegang tot het bestand.
  
The <tt>FreeFile</tt> function is used to create a free file handle:
+
De functie <tt>FreeFile</tt> wordt gebruikt om een vrije bestandsbehandelaar te maken.
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
FileNo = FreeFile
+
BestandsNr = FreeFile
</source>
+
</syntaxhighlight>
  
<tt>FileNo</tt> is an integer variable that receives the file handle. The handle is then used as a parameter for the <tt>Open</tt> instruction, which opens the file.  
+
<tt>BestandsNr</tt> is een variabele Integer die de bestandsbehandelaar ontvangt. De behandelaar wordt dan gebruikt als een parameter voor de instructie <tt>Open</tt>, die het bestand opent.  
  
To open a file so that it can be written as a text file, the <tt>Open</tt> call is:
+
De aanroep <tt>Open</tt> om een bestand te openen zodat het als een tekstbestand kan wordne geschreven is:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Open Filename For Output As #FileNo
+
Open Bestandsnaam For Output As #BestandsNr
</source>
+
</syntaxhighlight>
  
<tt>Filename</tt> is a string containing the name of the file. <tt>FileNo</tt> is the handle created by the <tt>FreeFile</tt> function.
+
<tt>Bestandsnaam</tt> is een tekenreeks die de naam van het bestand bevat. <tt>BestandsNr</tt> is de behandelaar die is gemaakt door de functie <tt>FreeFile</tt>.
  
Once the file is opened, the <tt>Print</tt> instruction can create the file contents, line by line:
+
Als het bestand eenmaal is geopend kan de instructie <tt>Print</tt> de inhoud van het bestand, regel voor regel, maken:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Print #FileNo, "This is a test line."
+
Print #BestandsNr, "Dit is een testregel."
</source>
+
</syntaxhighlight>
  
<tt>FileNo</tt> also stands for the file handle here. The second parameter specifies the text that is to be saved as a line of the text file.
+
<tt>BestandsNr</tt> staat ook hier voor de bestandsbehandelaar. De tweede parameter specificeert de tekst die moet worden opgeslagen als een regel in het tekstbestand.
  
Once the writing process has been completed, the file must be closed using a <tt>Close</tt> call:
+
Als het proces van schrijven is voltooid moet het bestand worden gesloten met behulp van de aanroep <tt>Close</tt>:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Close #FileNo
+
Close #BestandsNr
</source>
+
</syntaxhighlight>
  
Again here, the file handle should be specified.
+
De bestandsbehandelaar moet hier opnieuw gespecificeerd worden.
  
The following example shows how a text file is opened, written, and closed:
+
Het volgende voorbeeld geeft weer hoe een tekstbestand wordt geopend, er naar wordt geschreven en wordt gesloten:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Dim FileNo As Integer
+
Dim BestandsNr As Integer
Dim CurrentLine As String
+
Dim HuidigeRegel As String
Dim Filename As String
+
Dim Bestandsnaam As String
  
Filename = "c:\data.txt"           ' Define file name
+
Bestandsnaam = "c:\data.txt"       ' Definieer bestandsnaam
FileNo = FreeFile              ' Establish free file handle
+
BestandsNr = FreeFile              ' Maak een vrije bestandsbehandelaar
  
Open Filename For Output As #FileNo        ' Open file (writing mode)
+
Open Bestandsnaam For Output As #BestandsNr        ' Open bestand (modus schrijven)
Print #FileNo, "This is a line of text"     ' Save line
+
Print #BestandsNr, "Dit is een regel tekst"       ' Sla regel op
Print #FileNo, "This is another line of text"   ' Save line
+
Print #BestandsNr, "Dit is een andere regel tekst" ' Sla regel op
Close #FileNo                  ' Close file
+
Close #BestandsNr                                  ' Sluit bestand
</source>
+
</syntaxhighlight>
  
=== Reading Text Files ===
+
=== Lezen van tekstbestanden ===
  
Text files are read in the same way that they are written. The <tt>Open</tt> instruction used to open the file contains the <tt>For Input</tt> expression in place of the <tt>For Output</tt> expression and, rather than the Print command for writing data, the Line Input instruction should be used to read the data.
+
Tekstbestanden worden op dezelfde wijze gelezen als ze worden geschreven. De instructie <tt>Open</tt>, gebruikt om het bestand te openen, bevat de uitdrukking <tt>For Input</tt> in plaats van de uitdrukking <tt>For Output</tt> en, in plaats van de opdracht Print voor het schrijven van gegevens, moet de instructie Line Input worden gebruikt om de gegevens te lezen.
  
Finally, when calling up a text file, the <tt>eof</tt> instruction is used to check whether the end of the file has been reached:
+
Tenslotte wordt, bij het aanroepen van een tekstbestand, de instructie <tt>eof</tt> gebruikt om te controleren of het einde van het bestand is bereikt:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
eof(FileNo)
+
eof(BestandsNr)
</source>
+
</syntaxhighlight>
  
The following example shows how a text file can be read:
+
Het volgende voorbeeld geeft weer hoe een tekstbestand kan worden gelezen:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
Dim FileNo As Integer
+
Dim BestandsNr As Integer
Dim CurrentLine As String
+
Dim HuidigeRegel As String
Dim File As String
+
Dim Bestand As String
Dim Msg as String
+
Dim Bericht as String
  
' Define filename
+
' Definier de bestandsnaam
Filename = "c:\data.txt"
+
Bestand = "c:\data.txt"
  
' Establish free file handle
+
' Maak de vrije bestandsbehandelaar
FileNo = Freefile
+
BestandsNr = Freefile
  
' Open file (reading mode)
+
' Open het bestand (modus Lezen)
Open Filename For Input As FileNo
+
Open Bestand For Input As BestandsNr
  
' Check whether file end has been reached
+
' Controleer of het einde van het bestand is bereikt
Do While not eof(FileNo)
+
Do While not eof(BestandsNr)
   ' Read line
+
   ' Lees regel
   Line Input #FileNo, CurrentLine    
+
   Line Input #BestandsNr, HuidigeRegel    
   If CurrentLine <>"" then
+
   If HuidigeRegel <>"" then
     Msg = Msg & CurrentLine & Chr(13)
+
     Bericht = Bericht & HuidigeRegel & Chr(13)
 
   end if
 
   end if
 
Loop
 
Loop
  
 +
' Sluit het bestand
 +
Close #BestandsNr             
 +
Msgbox Bericht
 +
</syntaxhighlight>
  
' Close file
+
De individuele regels worden gevonden door een lus <tt>Do While</tt>, opgeslagen in de variabele <tt>Msg</tt> en aan het einde weergegeven in een berichtenvenster.
 
+
Close #FileNo             
+
Msgbox Msg
+
</source>
+
 
+
The individual lines are retrieved in a <tt>Do While</tt> loop, saved in the <tt>Msg</tt> variable, and displayed at the end in a message box.
+
  
 
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Files and Directories (Runtime Library)}}
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Files and Directories (Runtime Library)}}
 
{{PDL1}}
 
{{PDL1}}

Latest revision as of 15:08, 26 August 2022

Book.png


Werken met bestanden is een van de basistaken van een toepassing. De Apache OpenOffice API verschaft een groot scala aan objecten waarmee u kantoordocumenten kunt creëren, openen en aanpassen. Deze worden in detail gepresenteerd in Introductie voor de Apache OpenOffice API. Niettegenstaande dit, in sommige gevallen zult u direct het bestandssysteem moeten benaderen, zoeken in directory's of tekstbestanden bewerken. De runtime bibliotheek van Apache OpenOffice BASIC verschaft verscheidene fundamentele functies voor deze taken.

Documentation note.png Sommige DOS-specifieke bestands- en mapfuncties worden niet langer verschaft in Apache OpenOffice, of hun functie is slechts beperkt. Bijvoorbeeld: ondersteuning voor de functies ChDir, ChDrive en CurDir wordt niet verschaft. Sommige DOS-specifieke eigenschappen worden niet langer gebruikt in functies die eigenschappen van bestanden verwachten als parameters (bijvoorbeeld om onderscheid te maken tussen verborgen en systeembestanden). Deze wijziging was nodig om het hoogst mogelijke niveau van platformonafhankelijkheid te bereiken voor Apache OpenOffice.

Beheren van bestanden

modus Compatibiliteit

Het argument en de functie CompatibilityMode verschaffen grotere compatibiliteit met VBA, door de werking van bepaalde functies te wijzigen. Het effect on een bepaalde functie wordt, hieronder, bij die functie beschreven.

Als een argument krijgt CompatibilityMode( waarde ) een Booleaanse waarde om de modus in te stellen of uit te schakelen. Als een functie geeft CompatibilityMode() de Booleaanse waarde van de modus terug.

CompatibilityMode( True ) 'modus instellen
CompatibilityMode( False) 'modus uitschakelen
 
Dim bModus as Boolean
bModus = CompatibilityMode()

Zoeken in mappen

De functie Dir in Apache OpenOffice BASIC is verantwoordelijk voor het zoeken door mappen naar bestanden en sub-mappen. Bij het eerste verzoek dient een tekenreeks, die het pad bevat naar de mappen die moeten worden doorzocht, te worden toegewezen aan Dir als diens eerste parameter. De tweede parameter van Dir specificeert het bestand of de map waarnaar moet worden gezocht. Apache OpenOffice BASIC geeft de naam weer van de eerste map die wordt gevonden. Om het volgende item te vinden, zou de functie Dir moeten worden gevraagd zonder parameters. Als de functie Dir geen item meer vindt, geeft het een lege tekenreeks weer.

Het volgende voorbeeld toont hoe de functie Dirkan worden gebruikt om alle bestanden, die zich bevinden in één map, kunnen worden opgevraagd. De procedure slaat de individuele bestandsnamen op in de variabele AlleBestanden en geeft die dan weer in een berichtenvenster.

Sub BestandenTonen
  Dim VolgendBestand As String
  Dim AlleBestanden As String
 
  AlleBestanden = ""
  VolgendBestand = Dir("C:\", 0)
 
  While VolgendBestand  <> ""
    AlleBestanden = AlleBestanden & Chr(13) &  VolgendBestand 
    VolgendBestand = Dir
  Wend
 
  MsgBox AlleBestanden
End Sub

De 0, gebruikt in de tweede parameter in de functie Dir, zorgt er voor dat 0 alleen de namen van bestanden weergeeft en mappen worden genegeerd. De volgende parameters kunnen hier worden gespecificeerd:

  • 0 : geeft normale bestanden weer
  • 16 : sub-mappen

Het volgende voorbeeld is nagenoeg hetzelfde als het voorgaande voorbeeld, maar de functie Dir transporteert de waarde 16 als een parameter, die de sub-mappen van een map laat weergeven in plaats van de bestandsnamen.

Sub MappenTonen
  Dim VolgendeMap As String
  Dim AlleMappen As String
 
  AlleMappen = ""
  VolgendeMap = Dir("C:\", 16)
 
  While VolgendeMap <> ""
    AlleMappen = AlleMappen & Chr(13) &  VolgendeMap
    VolgendeMap = Dir
  Wend
 
  MsgBox AlleMappen
End Sub
Documentation note.png VBA : Indien gevraagd in Apache OpenOffice Basic, geeft de functie Dir, die de parameter 16 gebruikt, alleen de sub-mappen van een map weer. In VBA geeft de functie ook de namen van de normale bestanden weer zodat nadere controle is vereist om alleen de mappen op te halen. Bij het gebruiken van de functie CompatibilityMode ( true ) gedraagt Apache OpenOffice BASIC zich als VBA en de functie Dir, die parameter 16 gebruikt, geeft sub-mappen en namen van normale bestanden weer.


Documentation note.png VBA : De in VBA verschafte opties voor het zoeken door mappen, specifiek naar bestanden met de eigenschappen verborgen, systeembestand, archief en volumenaam, bestaat niet in Apache OpenOffice BASIC omdat de overeenkomende functies voor het bestandssysteem niet beschikbaar zijn op alle besturingssystemen.


Documentation note.png VBA : De specificaties voor het pad zoals vermeld in Dir mogen de tijdelijke plaatsaanduidingen * en ? gebruiken in zowel VBA als in Apache OpenOffice BASIC. In Apache OpenOffice BASIC kan de tijdelijke plaatsaanduiding * echter slechts het laatste teken van een bestandsnaam en/of bestandsextensie zijn, wat niet het geval is in VBA.


Maken en verwijderen van mappen

Apache OpenOffice BASIC verschaft de functie MkDir voor het maken van mappen.

MkDir ("C:\SubDir1")

Deze functie maakt mappen en sub-mappen. Alle benodigde mappen binnen een hiërarchie worden, indien vereist, ook gemaakt. Bijvoorbeeld: als alleen de map C:\SubDir1 bestaat, dan maakt de aanroep

MkDir ("C:\SubDir1\SubDir2\SubDir3\")

zowel de map C:\SubDir1\SubDir2 als de map C:\SubDir1\SubDir2\SubDir3.

De functie RmDir verwijdert mappen.

RmDir ("C:\SubDir1\SubDir2\SubDir3\")

Als de map mappen of bestanden bevat worden deze ook verwijderd. U zou daarom voorzichtig moeten zijn met het gebruik van RmDir.

Documentation note.png VBA : In VBA hebben de functies MkDir en RmDir alleen invloed op de huidige map. Aan de andere kant kunnen MkDir en RmDir in Apache OpenOffice BASIC worden gebruikt om niveaus van mappen te maken of te verwijderen.


Documentation note.png VBA : In VBA produceert RmDir een foutbericht als een map een bestand bevat. In Apache OpenOffice BASIC worden de map en alle bestanden daarin verwijderd. Als u de functie CompatibilityMode ( true ) gebruikt, zal Apache OpenOffice BASIC zich gedragen zoals VBA.


Kopiëren, hernoemen, verwijderen en bestaan controleren van bestanden

De volgende aanroep maakt een kopie van het bestand Bron met de naam Doel:

FileCopy(Bron, Doel)

Met behulp van de volgende functie kunt u het bestand OudeNaam hernoemen naar NieuweNaam. De syntaxis met het sleutelwoord As en het feit dat er geen komma wordt gebruikt gaat terug naar de wortels van de taal BASIC.

Name OudeNaam As NieuweNaam

De volgende aanroep verwijdert het bestand Bestandsnaam. Gebruik de functie RmDir als u de gehele map (inclusief de bestanden daarin) wilt verwijderen.

Kill(Bestandsnaam)

De functie FileExists kan worden gebruikt om te controleren of een bestand bestaat:

If FileExists(Bestandsnaam) Then 
  MsgBox "Bestand bestaat."
End If

Lezen en wijzigen van eigenschappen van bestanden

Bij het werken met bestanden, is het soms belangrijk om in staat te zijn de eigenschappen van bestanden vast te stellen, de tijd dat het bestand het laatst werd gewijzigd en de lengte van het bestand.

De volgende aanroep geeft enkele eigenschappen van het bestand weer.

Dim Attr As Integer
Attr = GetAttr(Bestandsnaam)

De teruggegeven waarde wordt verschaft als een bit-masker waarin de volgende waarden mogelijk zijn:

  • 1 : bestand is Alleen-lezen
  • 16 : naam van een map

Het volgende voorbeeld bepaalt het bit-masker van het bestand test.txt en controleert of het Alleen-lezen is of dat het een map is. Als geen van beide van toepassing is, wordt de tekenreeks "normaal" toegewezen aan BestandsOmschrijving.

Dim BestandsMasker As Integer
Dim BestandsOmschrijving As String
 
BestandsMasker = GetAttr("test.txt")
 
If (BestandsMasker AND 1) > 0 Then
  BestandsOmschrijving = BestandsOmschrijving & " alleen-lezen "
End IF
 
If (BestandsMasker AND 16) > 0 Then
  BestandsOmschrijving = BestandsOmschrijving & " map "
End IF
 
If BestandsOmschrijving = "" Then
  BestandsOmschrijving = " normaal "
End IF
 
MsgBox BestandsOmschrijving
Documentation note.png VBA : De in VBA gebruikte vlaggen voor het bevragen van de eigenschappen van bestanden verborgen, systeembestand, archief en volumenaam worden niet ondersteund in Apache OpenOffice BASIC omdat zij specifiek voor Windows zijn en niet of slechts gedeeltelijk aanwezig zijn op andere besturingssystemen.


De functie SetAttr maakt het mogelijk de eigenschappen van een bestand te wijzigen. De volgende aanroep kan daarom worden gebruikt om een bestand te voorzien van de status Alleen-lezen:

SetAttr("test.txt", 1)

Een bestaande status Alleen-lezen kan wordne verwijderd met de volgende aanroep:

SetAttr("test.txt", 0)

De datum en tijd van de laatste wijziging in een bestand worden verschaft door de functie FileDateTime. De datum wordt hier opgemaakt overeenkomstig de land-specifieke instellingen die worden gebruikt op het systeem.

FileDateTime("test.txt")   ' Geeft de datum en tijd van de laatste wijziging aan
                           ' het bestand.

De functie FileLen bepaalt de lengte van een bestand in bytes (als long integer waarde).

FileLen("test.txt")      ' Geeft de lengte van het bestand in bytes

Schrijven en lezen van tekstbestanden

Apache OpenOffice BASIC verschaft een breed scala van methoden om bestanden te lezen en te schrijven. De volgende uitleg heeft betrekking op het werken met tekstbestanden (niet tekstdocumenten).

Schrijven van tekstbestanden

Voordat een bestand kan worden benaderd, moet het eerst worden geopend. Om dit te doen is een vrije bestand behandelaar nodig, die duidelijk het bestand aanduidt voor aansluitende toegang tot het bestand.

De functie FreeFile wordt gebruikt om een vrije bestandsbehandelaar te maken.

BestandsNr = FreeFile

BestandsNr is een variabele Integer die de bestandsbehandelaar ontvangt. De behandelaar wordt dan gebruikt als een parameter voor de instructie Open, die het bestand opent.

De aanroep Open om een bestand te openen zodat het als een tekstbestand kan wordne geschreven is:

Open Bestandsnaam For Output As #BestandsNr

Bestandsnaam is een tekenreeks die de naam van het bestand bevat. BestandsNr is de behandelaar die is gemaakt door de functie FreeFile.

Als het bestand eenmaal is geopend kan de instructie Print de inhoud van het bestand, regel voor regel, maken:

Print #BestandsNr, "Dit is een testregel."

BestandsNr staat ook hier voor de bestandsbehandelaar. De tweede parameter specificeert de tekst die moet worden opgeslagen als een regel in het tekstbestand.

Als het proces van schrijven is voltooid moet het bestand worden gesloten met behulp van de aanroep Close:

Close #BestandsNr

De bestandsbehandelaar moet hier opnieuw gespecificeerd worden.

Het volgende voorbeeld geeft weer hoe een tekstbestand wordt geopend, er naar wordt geschreven en wordt gesloten:

Dim BestandsNr As Integer
Dim HuidigeRegel As String
Dim Bestandsnaam As String
 
Bestandsnaam = "c:\data.txt"        ' Definieer bestandsnaam 
BestandsNr = FreeFile               ' Maak een vrije bestandsbehandelaar
 
Open Bestandsnaam For Output As #BestandsNr        ' Open bestand (modus schrijven)
Print #BestandsNr, "Dit is een regel tekst"        ' Sla regel op 
Print #BestandsNr, "Dit is een andere regel tekst" ' Sla regel op 
Close #BestandsNr                                  ' Sluit bestand

Lezen van tekstbestanden

Tekstbestanden worden op dezelfde wijze gelezen als ze worden geschreven. De instructie Open, gebruikt om het bestand te openen, bevat de uitdrukking For Input in plaats van de uitdrukking For Output en, in plaats van de opdracht Print voor het schrijven van gegevens, moet de instructie Line Input worden gebruikt om de gegevens te lezen.

Tenslotte wordt, bij het aanroepen van een tekstbestand, de instructie eof gebruikt om te controleren of het einde van het bestand is bereikt:

eof(BestandsNr)

Het volgende voorbeeld geeft weer hoe een tekstbestand kan worden gelezen:

Dim BestandsNr As Integer
Dim HuidigeRegel As String
Dim Bestand As String
Dim Bericht as String
 
' Definier de bestandsnaam 
Bestand = "c:\data.txt"
 
' Maak de vrije bestandsbehandelaar
BestandsNr = Freefile
 
' Open het bestand (modus Lezen)
Open Bestand For Input As BestandsNr
 
' Controleer of het einde van het bestand is bereikt
Do While not eof(BestandsNr)
  ' Lees regel 
  Line Input #BestandsNr, HuidigeRegel   
  If HuidigeRegel <>"" then
    Bericht = Bericht & HuidigeRegel & Chr(13)
  end if
Loop
 
' Sluit het bestand 
Close #BestandsNr               
Msgbox Bericht

De individuele regels worden gevonden door een lus Do While, opgeslagen in de variabele Msg en aan het einde weergegeven in een berichtenvenster.


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools