Programovanie makier v LibreOffice: Otváranie súborov (3): Príkaz Print

LO.png Príkaz Print dokáže zapísať dáta do súboru bez postrádateľných znakov, ale naviac ešte dovoľuje napríklad určiť počet medzier medzi textovými alebo číselnými premennými.  

Príkaz Write, ktorý sme rozoberali v predošlom dielu, nám síce postačuje na zápis dát do súboru v prípade sekvenčného prístupu, ale samotný zápis obsahuje zbytočné znaky. Alternatívny príkaz Print nielenže dokáže zapísať dáta do súboru bez postrádateľných znakov, ale ešte dovoľuje napríklad určiť počet medzier medzi textovými alebo číselnými premennými.

Príkaz Print

V minulom dieli sme hovorili o príkaze Write. Pripomeňme si ho nasledujúcim makrom, kde vypíšeme aktuálny čas.

Sub writeFile
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Write #id, "Aktualny cas je:" 
 Write #id, Now 
Close #id
End Sub

Obsah súboru:

"Aktualny cas je:"
#06.10.2020 13:31:25#

Príkaz Write vie celkom jednoducho zapísať do súboru dáta. Lenže, ak sa pozastavíme nad formátom, tak nám napr. začnú vadiť znaky " alebo # na začiatku a na konci riadka. Existuje spôsob, ako sa týchto znakov zbaviť? Odpoveďou môže byť príkaz Print, ktorý pri výpise nemá tieto prebytočné znaky v zápise dát do súboru. Poďme sa o tom presvedčiť v mierne upravenom makre zápisu aktuálneho času do súboru.

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:" 
 Print #id, Now 
Close #id 
End Sub

Obsah súboru:

Aktualny cas je:
06.10.2020 13:33:23

Takže pri využití príkazu Print namiesto Write sa zbavujeme zbytočných znakov na začiatku a na konci.

Ďalšou výhodou príkazu Print je manažovanie medzier a tabulátora. Napríklad môžete určiť, koľko medzier by sa malo nachádzať medzi slovami. Na tento účel sa využíva funkcia Spc().

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:",Spc(1);Now
Close #id 
End Sub

Obsah súboru:

Aktualny cas je: 08.10.2020 01:51:59 

S pomocou funkcie Spc(1) sme dali jednu medzeru. Skúsme dať napríklad tri medzery.

Sub writeFile
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:",Spc(3);Now
Close #id 
End Sub

Obsah súboru:

Aktualny cas je:   08.10.2020 01:55:15 

Funguje to. Všimnite si však, že funkciu Spc() oddeľujeme bodkočiarkou, nie čiarkou. Čo ak by sme predsa skúsili čiarku? Prejde nám to?

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:", Spc(3), Now
Close #id 
End Sub

Obsah súboru:

Aktualny cas je:              08.10.2020 02:07:09

Ako vidieť, za funkciou Spc() musí isť bodkočiarka a nie čiarka, inak nedostaneme očakávaný výsledok. Jedine pri funkciách Spc() a Tab() sa dávajú bodkočiarky. Za textovou alebo číselnou premennou môže byť jak čiarka, tak bodkočiarka. Presvedčme sa o tom v následovnom makre.

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:"; Spc(3); Now
Close #id 
End Sub

Obsah súboru: 

Aktualny cas je:   08.10.2020 02:17:45

A čo funkcia Tab()? Pracuje sa s ňou rovnako ako s funkciou Spc(). Len miesto medzerníku získame účinok ako po stlačení klávesy Tab.

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:", Tab(1); Now
Close #id 
End Sub

Obsah súboru:

Aktualny cas je: 08.10.2020 02:39:39

Dajme Tab(2) a mali by sme dostať účinok dvoch stlačení klávesy Tab.

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Output As #id 
 Print #id, "Aktualny cas je:", Tab(2); Now
Close #id 
End Sub 

Obsah súboru: 

Aktualny cas je: 08.10.2020 02:43:09

Príkaz Print aj Write by sa mali dať využívať len pri režime so sekvenčným prístupom k súboru. Avšak, pri režime Random fungujú oba príkazy. Viac o rozdieloch medzi sekvenčným a náhodným prístupom k súboru niekedy inokedy.

Sub writeFile 
Dim id As Integer 
Dim path As String 
path = "C:\Users\astro\Desktop\makra\zapisnik.txt" 
id = FreeFile() 
Open path For Random As #id 
Print #id, "Aktualny cas je:", Tab(1); Now
Write #id, "Aktualny cas je:", Now
Close #id 
End Sub

Obsah súboru: 

Aktualny cas je:	06.11.2020 17:35:11
"Aktualny cas je:",#06.11.2020 17:35:11#

Námet na tento článok poslúžili tieto zdroje:

  • OpenOffice.org Macros Explained Third Edition, Andrew Pitonyak, page 180-181, dostupné online
  • Příkaz Print, help.libreoffice.org, dostupné online
  • Příkaz Write, help.libreoffice.org, dostupné online
(Jako ve škole) Průměr: 1.00 | Hodnotilo: 336
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
ZWsoft
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz