Difference between revisions of "NL/Documentation/BASIC Guide/Files and Directories (Runtime Library)"
(→Writing and Reading Text Files) |
m (→Lezen van tekstbestanden) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
|runtime=block | |runtime=block | ||
}} | }} | ||
− | {{DISPLAYTITLE:Bestanden en mappen ({{ | + | {{DISPLAYTITLE:Bestanden en mappen ({{AOo}} Runtime-bibliotheek)}} |
__NOTOC__ | __NOTOC__ | ||
− | Werken met bestanden is een van de basistaken van een toepassing. De {{ | + | 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. |
− | {{ | + | {{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 20: | Line 20: | ||
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. | 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. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
CompatibilityMode( True ) 'modus instellen | CompatibilityMode( True ) 'modus instellen | ||
CompatibilityMode( False) 'modus uitschakelen | CompatibilityMode( False) 'modus uitschakelen | ||
Line 26: | Line 26: | ||
Dim bModus as Boolean | Dim bModus as Boolean | ||
bModus = CompatibilityMode() | bModus = CompatibilityMode() | ||
− | </ | + | </syntaxhighlight> |
=== Zoeken in mappen === | === Zoeken in mappen === | ||
− | De functie <tt>Dir</tt> in {{ | + | 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. |
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. | 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. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Sub BestandenTonen | Sub BestandenTonen | ||
Dim VolgendBestand As String | Dim VolgendBestand As String | ||
Line 49: | Line 49: | ||
MsgBox AlleBestanden | MsgBox AlleBestanden | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
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: | 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: | ||
Line 56: | Line 56: | ||
* <tt>16</tt> : sub-mappen | * <tt>16</tt> : sub-mappen | ||
− | Het volgende voorbeeld is nagenoeg hetzelfde als het voorgaande voorbeeld, maar de functie <tt>Dir</tt> transporteert de waarde 16 als een parameter, | + | 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. |
− | < | + | <syntaxhighlight lang="oobas"> |
Sub MappenTonen | Sub MappenTonen | ||
Dim VolgendeMap As String | Dim VolgendeMap As String | ||
Line 73: | Line 73: | ||
MsgBox AlleMappen | MsgBox AlleMappen | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
− | {{Documentation/VBAnote|Indien gevraagd in {{ | + | {{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|De in VBA verschafte opties voor het zoeken door mappen, specifiek naar bestanden met de eigenschappen '''verborgen''', '''systeembestand''', '''archief''' en '''volumenaam''', bestaat niet in {{ | + | {{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|De specificaties voor het pad zoals vermeld in <tt>Dir</tt> mogen de tijdelijke plaatsaanduidingen * en ? gebruiken in zowel VBA als in {{ | + | {{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. }} |
=== Maken en verwijderen van mappen === | === Maken en verwijderen van mappen === | ||
− | {{ | + | {{AOo}} BASIC verschaft de functie <tt>MkDir</tt> voor het maken van mappen. |
− | < | + | <syntaxhighlight lang="oobas"> |
MkDir ("C:\SubDir1") | MkDir ("C:\SubDir1") | ||
− | </ | + | </syntaxhighlight> |
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 | 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 | ||
− | < | + | <syntaxhighlight lang="oobas"> |
MkDir ("C:\SubDir1\SubDir2\SubDir3\") | MkDir ("C:\SubDir1\SubDir2\SubDir3\") | ||
− | </ | + | </syntaxhighlight> |
zowel de map <tt>C:\SubDir1\SubDir2</tt> als de map <tt>C:\SubDir1\SubDir2\SubDir3</tt>. | zowel de map <tt>C:\SubDir1\SubDir2</tt> als de map <tt>C:\SubDir1\SubDir2\SubDir3</tt>. | ||
Line 99: | Line 99: | ||
De functie <tt>RmDir</tt> verwijdert mappen. | De functie <tt>RmDir</tt> verwijdert mappen. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
RmDir ("C:\SubDir1\SubDir2\SubDir3\") | RmDir ("C:\SubDir1\SubDir2\SubDir3\") | ||
− | </ | + | </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>. | Als de map mappen of bestanden bevat worden deze '''ook verwijderd'''. U zou daarom voorzichtig moeten zijn met het gebruik van <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 {{ | + | {{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 produceert <tt>RmDir</tt> een foutbericht als een map een bestand bevat. In {{ | + | {{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.}} |
=== Kopiëren, hernoemen, verwijderen en bestaan controleren van bestanden === | === Kopiëren, hernoemen, verwijderen en bestaan controleren van bestanden === | ||
Line 112: | Line 112: | ||
De volgende aanroep maakt een kopie van het bestand <tt>Bron</tt> met de naam <tt>Doel</tt>: | De volgende aanroep maakt een kopie van het bestand <tt>Bron</tt> met de naam <tt>Doel</tt>: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
FileCopy(Bron, Doel) | FileCopy(Bron, Doel) | ||
− | </ | + | </syntaxhighlight> |
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. | 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. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Name OudeNaam As NieuweNaam | Name OudeNaam As NieuweNaam | ||
− | </ | + | </syntaxhighlight> |
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. | 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. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Kill(Bestandsnaam) | Kill(Bestandsnaam) | ||
− | </ | + | </syntaxhighlight> |
De functie <tt>FileExists</tt> kan worden gebruikt om te controleren of een bestand bestaat: | De functie <tt>FileExists</tt> kan worden gebruikt om te controleren of een bestand bestaat: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
If FileExists(Bestandsnaam) Then | If FileExists(Bestandsnaam) Then | ||
MsgBox "Bestand bestaat." | MsgBox "Bestand bestaat." | ||
End If | End If | ||
− | </ | + | </syntaxhighlight> |
=== Lezen en wijzigen van eigenschappen van bestanden === | === Lezen en wijzigen van eigenschappen van bestanden === | ||
Line 142: | Line 142: | ||
De volgende aanroep geeft enkele eigenschappen van het bestand weer. | De volgende aanroep geeft enkele eigenschappen van het bestand weer. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Dim Attr As Integer | Dim Attr As Integer | ||
Attr = GetAttr(Bestandsnaam) | Attr = GetAttr(Bestandsnaam) | ||
− | </ | + | </syntaxhighlight> |
De teruggegeven waarde wordt verschaft als een bit-masker waarin de volgende waarden mogelijk zijn: | De teruggegeven waarde wordt verschaft als een bit-masker waarin de volgende waarden mogelijk zijn: | ||
Line 154: | Line 154: | ||
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>. | 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>. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Dim BestandsMasker As Integer | Dim BestandsMasker As Integer | ||
Dim BestandsOmschrijving As String | Dim BestandsOmschrijving As String | ||
Line 173: | Line 173: | ||
MsgBox BestandsOmschrijving | MsgBox BestandsOmschrijving | ||
− | </ | + | </syntaxhighlight> |
− | {{Documentation/VBAnote|De in VBA gebruikte vlaggen voor het bevragen van de eigenschappen van bestanden '''verborgen''', '''systeembestand''', '''archief''' en '''volumenaam''' | + | {{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.}} |
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: | 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: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
SetAttr("test.txt", 1) | SetAttr("test.txt", 1) | ||
− | </ | + | </syntaxhighlight> |
Een bestaande status Alleen-lezen kan wordne verwijderd met de volgende aanroep: | Een bestaande status Alleen-lezen kan wordne verwijderd met de volgende aanroep: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
SetAttr("test.txt", 0) | SetAttr("test.txt", 0) | ||
− | </ | + | </syntaxhighlight> |
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. | 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. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
FileDateTime("test.txt") ' Geeft de datum en tijd van de laatste wijziging aan | FileDateTime("test.txt") ' Geeft de datum en tijd van de laatste wijziging aan | ||
' het bestand. | ' het bestand. | ||
− | </ | + | </syntaxhighlight> |
De functie <tt>FileLen</tt> bepaalt de lengte van een bestand in bytes (als long integer waarde). | De functie <tt>FileLen</tt> bepaalt de lengte van een bestand in bytes (als long integer waarde). | ||
− | < | + | <syntaxhighlight lang="oobas"> |
FileLen("test.txt") ' Geeft de lengte van het bestand in bytes | FileLen("test.txt") ' Geeft de lengte van het bestand in bytes | ||
− | </ | + | </syntaxhighlight> |
== Schrijven en lezen van tekstbestanden == | == Schrijven en lezen van tekstbestanden == | ||
− | {{ | + | {{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). |
=== Schrijven van tekstbestanden === | === Schrijven van tekstbestanden === | ||
Line 212: | Line 212: | ||
De functie <tt>FreeFile</tt> wordt gebruikt om een vrije bestandsbehandelaar te maken. | De functie <tt>FreeFile</tt> wordt gebruikt om een vrije bestandsbehandelaar te maken. | ||
− | < | + | <syntaxhighlight lang="oobas"> |
BestandsNr = FreeFile | BestandsNr = FreeFile | ||
− | </ | + | </syntaxhighlight> |
<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. | <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. | ||
Line 220: | Line 220: | ||
De aanroep <tt>Open</tt> om een bestand te openen zodat het als een tekstbestand kan wordne geschreven is: | De aanroep <tt>Open</tt> om een bestand te openen zodat het als een tekstbestand kan wordne geschreven is: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Open Bestandsnaam For Output As #BestandsNr | Open Bestandsnaam For Output As #BestandsNr | ||
− | </ | + | </syntaxhighlight> |
<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>. | <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>. | ||
Line 228: | Line 228: | ||
Als het bestand eenmaal is geopend kan de instructie <tt>Print</tt> de inhoud van het bestand, regel voor regel, maken: | Als het bestand eenmaal is geopend kan de instructie <tt>Print</tt> de inhoud van het bestand, regel voor regel, maken: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Print #BestandsNr, "Dit is een testregel." | Print #BestandsNr, "Dit is een testregel." | ||
− | </ | + | </syntaxhighlight> |
<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. | <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. | ||
Line 236: | Line 236: | ||
Als het proces van schrijven is voltooid moet het bestand worden gesloten met behulp van de aanroep <tt>Close</tt>: | Als het proces van schrijven is voltooid moet het bestand worden gesloten met behulp van de aanroep <tt>Close</tt>: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Close #BestandsNr | Close #BestandsNr | ||
− | </ | + | </syntaxhighlight> |
De bestandsbehandelaar moet hier opnieuw gespecificeerd worden. | De bestandsbehandelaar moet hier opnieuw gespecificeerd worden. | ||
Line 244: | Line 244: | ||
Het volgende voorbeeld geeft weer hoe een tekstbestand wordt geopend, er naar wordt geschreven en wordt gesloten: | Het volgende voorbeeld geeft weer hoe een tekstbestand wordt geopend, er naar wordt geschreven en wordt gesloten: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Dim BestandsNr As Integer | Dim BestandsNr As Integer | ||
Dim HuidigeRegel As String | Dim HuidigeRegel As String | ||
Line 256: | Line 256: | ||
Print #BestandsNr, "Dit is een andere regel tekst" ' Sla regel op | Print #BestandsNr, "Dit is een andere regel tekst" ' Sla regel op | ||
Close #BestandsNr ' Sluit bestand | Close #BestandsNr ' Sluit bestand | ||
− | </ | + | </syntaxhighlight> |
− | === | + | === Lezen van tekstbestanden === |
− | + | 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. | |
− | + | 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: | |
− | < | + | <syntaxhighlight lang="oobas"> |
− | eof( | + | eof(BestandsNr) |
− | </ | + | </syntaxhighlight> |
− | + | Het volgende voorbeeld geeft weer hoe een tekstbestand kan worden gelezen: | |
− | < | + | <syntaxhighlight lang="oobas"> |
− | Dim | + | Dim BestandsNr As Integer |
− | Dim | + | Dim HuidigeRegel As String |
− | Dim | + | Dim Bestand As String |
− | Dim | + | Dim Bericht as String |
− | ' | + | ' Definier de bestandsnaam |
− | + | Bestand = "c:\data.txt" | |
− | ' | + | ' Maak de vrije bestandsbehandelaar |
− | + | BestandsNr = Freefile | |
− | ' Open | + | ' Open het bestand (modus Lezen) |
− | Open | + | Open Bestand For Input As BestandsNr |
− | ' | + | ' Controleer of het einde van het bestand is bereikt |
− | Do While not eof( | + | Do While not eof(BestandsNr) |
− | ' | + | ' Lees regel |
− | Line Input # | + | Line Input #BestandsNr, HuidigeRegel |
− | If | + | If HuidigeRegel <>"" then |
− | + | Bericht = Bericht & HuidigeRegel & Chr(13) | |
end if | end if | ||
Loop | Loop | ||
+ | ' Sluit het bestand | ||
+ | Close #BestandsNr | ||
+ | Msgbox Bericht | ||
+ | </syntaxhighlight> | ||
− | + | 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. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
{{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
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.
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
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.
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
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). |