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

LO.png V článku nás čaká viacero funkcii, ktoré nám umožnia pracovať s poľami. Je to prvá úvodná časť o manipulácii s poľami v makrách. Z minulého dielu už máte predstavu, čo je pole a ako sa s nimi v jednoduchostí pracuje.  

Funkcia Array

Ukážeme si alternatívnu deklaráciu poľa. Použijeme pri tom funkcie Array. Výhodou tohto postupu je, že nemusíme pri deklarácii definovať typ premenných. Prečo je to tak, sa ochvíľu dozviete.

1. príklad: Deklarácia prázdneho poľa

Sub EmptyArray  REM začiatok makra
 
 Dim a()  REM deklarácia prázdneho poľa
 Dim number As Integer  REM deklarácia premennej typu Integer
 
 number = 55   REM priradenie hodnoty danej premennej 
 
 Dim number1 As Integer
 
 number1 = 66
 a() = Array(number, number1)   REM priradenie hodnôt prvkom poľa
 
 MsgBox a(0) & " " & a(1)   REM výpis na obrazovku
 
 End Sub   REM koniec procedúry

Výsledok makra Výsledok makra

Rozbor makra:

Na začiatku deklarujeme pomocou signatúry a() prázdne pole. Potom s pomocou slova Array() nakŕmime prázdne pole. A nakoniec jednoducho vypíšeme jednotlivé prvky poľa. Samotná funkcia Array vracia pole typu Variant. Skúsme v druhom príklade do Array vložiť rôzne typy premenných.

2. príklad: Experiment s funkciou Array

Sub EmptyArray
 
 Dim a() 
 
 a() = Array("ahoj", 55, "Dnes je ale zima!", 56.55)
 
 MsgBox a(0) & " " & a(1) & " " & a(2) & " " & a(3)  
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Pamätáte, že návratová hodnota funkcie Array je Variant? Znamená to, že do prvkov poľa môžete dať rôzne typy premenných.  

Funkcia DimArray

Funkciu DimArray môžeme použiť miesto deklarácie a() resp a(5 To 10) a ďalších variácii.

3. príklad: Použitie funkcie DimArray

Sub EmptyArray
 
 Dim a() 
 
 a() = Array("ahoj", 55, "Dnes je ale zima!", 56.55)
 a() = DimArray(2)   REM vytvoríme prázdne pole o veľkostí 3 prvkov (0,1,2)
 
 MsgBox a(0) & " " & a(1) & " " & a(2)  
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

DimArray nám vracia prázdne pole typu Variant. Výsledok, ako vidíte je samozrejme taktiež prázdny.

Je premenná pole?

Ako zistiť, či je nejaká premenná pole? Slúži nám na to funkcia isArray.

4. príklad: Testujeme premenné

Sub Array
 
 Dim a(5) As Integer
 Dim number As Integer
 
 REM vo výpise využijeme funkciu isArray, ktorá otestuje, či premenná je pole
 
 MsgBox "Prva premenna: " & isArray(a()) & Chr(10) & "Druha premenna: " & isArray(number) 
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Funkcia isArray vracia pravdivostnú hodnotu True, ak je premenná pole a False, ak ním nie je.

Najnižší a najvyšší index

Predstavte si situáciu, že potrebujete narýchlo zistiť, kde začína pole a končí. Inak povedané, aby ste sa vyhli pretečeniu pamäte, musíte zistiť, kde začína alebo končí index poľa a následne to využili napríklad formou cyklu. Najnižší index poľa zisťuje funkcia LBound a ten najvyšší UBound.

5. príklad: Využitie funkcii LBound a UBound

Sub macro
 
 Dim a() 
 
 a = Array("ahoj", 55, "Dnes je ale zima!", 56.55, "AAA", "mnauky")
 
 REM vo výpise zistíme najnižší a najvyšší index poľa
 
 MsgBox "Začiatok poľa v indexe: " & LBound(a()) & Chr(10) & "Koniec poľa v indexe: " & 
 UBound(a()) 
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Funkcia LBound vracia najnižší index poľa a funkcia UBound vracia ten najvyšší.

Funkcia ReDim

Ak by vám doteraz spomenuté deklarácie poľa nestačili, predstavujem vám ďalšiu funkciu, ktorá deklaruje pole. Volá sa ReDim. Ale predsa, funguje podobne, ako deklarácia Dim alebo DimArray. Prípona „Re“ evokuje, že sa niečo opakuje. Aj funkcia ReDim mení vlastností už deklarovaného poľa.

6. príklad: Využitie funkcie ReDim

Sub macro
 
 Dim pole(5) As Integer
 
 pole(1) = 55
 
 ReDim pole(5) As Integer   REM deklarácia pomocou funkcie ReDim
 
 pole(1) = 7789
 
 MsgBox pole(1)
 
 End Sub

Výsledok makra Výsledok makra

Rozbor makra:

Práve vďaka funkcie ReDim môžete znovu deklarovať pole. Samozrejme, je to len jedna z ciest. Výber je už len na vás.

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

Komentáře

user avatar Jiří Masný
Odpovědět
Programovanie makier v LibreOffice: Práca s poľom (1)
24. 12. 2016, 09:03:25
I já jako laik,jsem to víceméně pochopil

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.

 
CCV - CRM Akademie
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.

 
Netmail
 
 
woo jaw demo hz