Identifikátor súboru
StarBasic nám umožňuje otvárať a rôzne manipulovať so súbormi. Aby sme sa k otváraniu súborov dostali, potrebujeme sa zoznámiť s identifikátorom súboru resp. presnejšie identifikátorom dátového kanálu.
Každý otvorený súbor má nejaké celé číslo, ktoré ho charakterizuje a podľa tohto identifikátora k nemu môžeme pristupovať a vykonávať nad súborom rôzne operácie, napr. čítanie či zápis.
Na získanie identifikátora súboru sa používa funkcia FreeFile()
. Vracia nevyužité celé číslo. Toto číslo sa použije pri otváraní súboru a ďalších úkonoch pri práci so súbormi.
Vypíšme hodnotu, ktorú vracia funkcia FreeFile()
.
Sub idFile Dim id As Integer id = FreeFile() MsgBox "Navratova hodnota funkcie FreeFile(): " & id End Sub
Vypísanie návratovej hodnoty funkcie FreeFile()
Otváranie súborov
Takže poznáme identifikátor súborov, s pomocou neho môžeme so súbormi pracovať. Ostáva si len predstaviť príkaz Open
, ktorý otvára samotné súbory. Jeho syntax je nasledovná:
Open FileName For Mode [Access ioMode] [Lock Mode] As #n [Len=Datalen]
Samotná syntax vyzerá na prvé pozretie hrozivo, ale v tomto článku si ukážeme len nutný základ k otvoreniu súboru. To znamená, že nevyužijeme celú syntax príkazu Open
, len jej časť. A najlepšie sa učí nad praktickým príkladom. Poďme nato.
Sub openFile Dim id As Integer Dim path As String path = "C:\Users\astro\Desktop\makra\zapisnik.txt" id = FreeFile() Open path For Output As #id MsgBox "Identifikator suboru: " & id End Sub
Vypísanie identifikátora súboru
Po spustení makra sa nám vytvorí súbor s názvom zapisnik.txt
. Je to preto, lebo sme zvolili režim pre zápis, Output
. Tento režim umožňuje, že ak neexistuje súbor, ktorý chceme otvoriť, tak vytvorí nový. Nie všetky režimy to ale podporujú. Ak by však vaše súbory existovali a vy spustíte súbor v režime Output
, tak by sa mal vymazať súbor a znova vytvoriť. Režimy si viac rozoberieme v ďalších článkoch. Na záver makra sme vypísali identifikátor súboru.
Skúsme teraz otvoriť dva súbory a vypíšme ich identifikátor.
Sub openFile Dim id1,id2 As Integer Dim path1,path2 As String path1 = "C:\Users\astro\Desktop\makra\zapisnik.txt" path2 = "C:\Users\astro\Desktop\makra\dennik.txt" id1 = FreeFile() Open path1 For Output As #id1 id2 = FreeFile() Open path2 For Output As #id2 MsgBox "Identifikator prveho suboru: " & id1 & Chr(10) & "Identifikator druheho suboru: " & id2 End Sub
Zobrazenie identifikátorov dvoch súborov
Otvorili sme úspešne dva súbory. Taktiež si pri výpise všimnime, že každý súbor má svoj vlastný číselný identifikátor.
Zatvorenie súboru
Ak vieme nejaký súbor otvoriť, logický by sme ho mali vedieť aj uzavrieť. O to sa postará príkaz Close
. Vieme ním zavrieť nielen jeden súbor, ale viacero. Nasledujúce makro otvorí tri súbory a potom ich všetky uzavrieme naraz príkazom Close
. Následne otvoríme ešte jeden súbor a budeme sledovať, aký identifikátor dostane.
Sub openFile Dim id1,id2,id3,id4 As Integer Dim path1,path2,path3,path4 As String path1 = "C:\Users\astro\Desktop\makra\zapisnik.txt" path2 = "C:\Users\astro\Desktop\makra\dennik.txt" path3 = "C:\Users\astro\Desktop\makra\zosit.txt" path4 = "C:\Users\astro\Desktop\makra\poznamky.txt" id1 = FreeFile() Open path1 For Output As #id1 id2 = FreeFile() Open path2 For Output As #id2 id3 = FreeFile() Open path3 For Output As #id3 Close #id1 #id2 #id3 id4 = FreeFile() Open path4 For Output As #id4 MsgBox "Identifikator prveho suboru: " & id1 & Chr(10) & "Identifikator druheho suboru: " & id2 & Chr(10) & "Identifikator tretieho suboru: " & id3 & Chr(10) & "Identifikator stvrteho suboru: " & id4 End Sub
Sledujeme hodnoty identifikátorov jednotlivých súborov
Takže, čo sa to v makre odohralo? Najprv sme otvorili tri súbory. Číslovanie identifikátorov súborov išlo za sebou v podobe 1,2,3. Po uzavretí súborov sa stali identifikátory voľné a preto získal ďalší otvorený súbor identifikátor s hodnotou 1.
Námet na tento článok poslúžili tieto zdroje:
OpenOffice.org Macros Explained Third Edition, Andrew Pitonyak, page 175-176, dostupné online
Funkce FreeFile, help.libreoffice.org, dostupné online
Příkaz Open, help.libreoffice.org, dostupné online
Příkaz Close, help.libreoffice.org, dostupné online