Programovanie makier v LibreOffice: Práca s poľom (2)

LO.png Minulý článok bol o práci s poľom. V tomto článku pokračujeme s nastoleným kurzom. Ukážeme si ďalšie funkcie a triky na prácu s poľami.  

Funkcia Join

Predstavte si, že do poľa zadávate znaky a pole je zároveň typu Variant. Je dosť nepraktické vypisovať s pomocou funkcie MsgBox jednotlivé prvky poľa. A tu vstupujú reťazce, ktoré by ste mali poznať z minulých dielov. Ako dostaneme z poľa typu napríklad Variant alebo Integer reťazec? Jednou z možností je funkcia Join.

1. príklad: Využitie funkcie Join

Sub macro REM začiatok procedúry
 
 Dim pole(4) As variant REM deklarácia poľa
 
 pole(0) = "a" REM priradenie do jednotlivých prvkov poľa
 pole(1) = "h"
 pole(2) = "o"
 pole(3) = "j"
 
 MsgBox Join(pole) REM využitie funkcie Join a následný výpis na obrazovku
 
 End Sub REM koniec procedúry

Výsledok makra Výsledok makra

Rozbor makra: Funkcia Join zoberie celé pole a vráti ho ako String.

No fajn, podarilo sa nám vypísať celé pole ako reťazec. Ale asi tušíte, že to moc na reťazec (slovo) nevyzerá, resp. ako ho poznáme my ľudia. Aj na to myslí funkcia Join. V druhom parametri môžeme definovať, ako môže vyzerať reťazec.

2. príklad: Druhý parameter funkcie Join

Sub macro
 
 Dim pole(4) As variant
 
 pole(0) = "a"
 pole(1) = "h"
 pole(2) = "o"
 pole(3) = "j"
 
 MsgBox Join(pole, "") & Chr(10) & Join(pole, ".") REM experimentovanie s funkciou Join
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra: Druhy parameter definuje, ako bude reťazec vyzerať. Ak chceme medzi jednotlivými prvkami pridať bodku, tak napíšeme ".".

Skúsime aj pole typu Integer. Čo myslíte, bude nejaká zmena vo fungovaní programu?

3. príklad: Funkcia Join a pole typu Integer

Sub macro
 
 Dim pole(5) As variant
 
 pole(0) = 45
 pole(1) = 58
 pole(2) = 66
 pole(3) = 78
 pole(4) = 458
 
 MsgBox Join(pole, ",") REM výpis na obrazovku
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra: Všetko funguje tak, ako má.

Funkcia Split

Zoberme si teraz opačnú situáciu. Máte reťazec, ale nutne ho potrebujete zmeniť na pole, aby ste urobili nejaké operácie s prvkami poľa v cykle. Ukážeme si jednoduchý príklad na konverziu z reťazca na pole s pomocou funkcie Split.

4. príklad: Využitie funkcie Split

Sub macro
 
 Dim retazec() As String
 Dim text As String
 
 text = "Tak co, uz vies programovat makra?"
 retazec() = Split(text) REM využitie funkcie Split
 
 MsgBox retazec(0) & retazec(1) & retazec(2) & retazec(3) & retazec(4) & retazec(5) 
 REM výstup na obrazovku
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Funkcia Split zoberie reťazec a naseká ho do poľa podľa medzier. Časť reťazca oddelená medzerou, bude predstavovať jeden prvok poľa.

Funkcia Split nám umožňuje povedať, podľa čoho má rozlišovať reťazec na jednotlivé prvky poľa. V predvolenom stave je to medzera. Ale skúsme definovať miesto medzery bodku. Zmení sa vôbec niečo?

5. príklad: Druhý parameter funkcie Split

Sub macro
 
 Dim retazec() As String 
 Dim text As String
 
 text = "Tak. co., uz. vies. programovat. makra?"
 retazec() = Split(text, ".")
 
 MsgBox retazec(0) & retazec(1) & retazec(2) & retazec(3) & retazec(4) & retazec(5) 
 REM výpis na obrazovku
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra: Zmenilo sa to, že funkcia Split ignoruje medzery. Prvky vytvára podľa bodiek v reťazci. A tak nám vyjde reťazec podľa našich vetných predstáv.

Funkcia Split nám ponúka i ďalšiu možnosť, V treťom parametri môžeme definovať, koľko má mať prvkov výsledne pole.

6. príklad: Tretí parameter funkcie Split

Sub macro
 
 Dim retazec() As String 
 Dim text As String
 
 text = "Tak. co., uz. vies. programovat. makra?"
 retazec() = Split(text, ".", 3)
 
 MsgBox retazec(0) & retazec(1) & retazec(2)
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra: Tretí parameter určil, že pole bude mať tri prvky. Keďže bodiek je v reťazci viacej ako počet prvkov budúceho poľa, tak funkcia Split prvé dva bodky spracuje a zvyšok reťazca sa stane súčasťou tretieho prvku.

(Jako ve škole) Průměr: 1,00 | Hodnotilo: 3
 

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.

 
myAVIS
Eduard Boldižár

Eduard Boldižár

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

 
Sefira
 
 
woo jaw demo hz