Tömbök
Az egyszerű (skaláris) változók mellett az Apache OpenOffice Basic támogatja a tömbök (adatmezők) használatát is. Egy adatmező számos változóból áll, amelyeket egy indexen keresztül lehet elérni.
Tömbök definiálása
Tömbök a következőképpen definiálhatók:
Egyszerű tömbök
A tömbdeklaráció hasonlít az egyszerű változók deklarációjához. Viszont a változódeklarációkkal ellentétben a tömbneveket zárójelek követik, amelyekben az elemek számára vonatkozó specifikáció található. A
Dim SajatTomb(3)
kifejezés deklarált egy tömböt, amely négy variant típusú változót tartalmaz: SajatTomb(0), SajatTomb(1), SajatTomb(2) és SajatTomb(3).
A tömbben típusspecifikus változókat is deklarálhatunk. Például a következő sor deklarál egy tömböt négy integer (egész szám) változóval:
Dim SajatEgesz(3) As Integer
Az előző példákban a tömbök indexe mindig a szabványos 0 értékkel kezdődik. Ha szükség van rá, megadhatunk egy tartományt is a kezdő és befejező érték megadásával a tömbdeklarációban. A következő példa létrehoz egy tömböt hat integer (egész szám) értékkel, amelyek az 5-től 10-ig terjedő indexszel érhetők el:
Dim SajatEgesz(5 To 10) As Integer
Az indexeknek nem kell pozitív értékeknek lenniük. A következő példa szintén egy helyes deklarációt mutat be, de negatív tömbhatárokkal:
Dim SajatEgesz(-10 To -5) As Integer
Deklarál egy tömböt hat integer (egész szám) értékkel, amelyek a -10-től -5-ig terjedő indexszel érhetők el
A tömbindex megadásánál három szabályt kell figyelembe venni:
- A legkisebb használható index a -32768.
- A legnagyobb használható index a 32767.
- Az elemek maximális száma (egy tömbdimenzión belül) 16368.
A VBA-ban néha egyéb tömbindex-határértékek is érvényesek lehetnek. Ugyanez vonatkozik a dimenziónkénti elemek számára is. Az érvényes értékek a megfelelő VBA-dokumentációban találhatók meg. |
A kezdőindex értéke
A tömb kezdőindexének értéke általában 0. Ha szükséges, módosíthatjuk az összes tömbdeklaráció kezdőindexét a következő utasítással:
Option Base 1
Ezt az utasítást a modul fejlécében kell elhelyezni, ha azt akarjuk, hogy a modul összes tömbdeklarációjára vonatkozzon. Viszont ez nincs hatással az UNO-sorozatokra, amelyeket az Apache OpenOffice API definiál, és amelyek mindig a 0-s indexszel kezdődnek. Éppen ezért lehetőleg tartózkodjunk az Option Base 1 használatától.
Egy tömb elemeinek számát nem befolyásolja az Option Base 1 használata, csak a kezdőindex módosul. Az
Option Base 1
' ...
Dim SajatEgesz(3)
deklaráció létrehoz egy 4 integer (egész szám) változót, amelyek a következő kifejezésekkel írhatók le: SajatEgesz(1), SajatEgesz(2), SajatEgesz(3) és SajatEgesz(4).
Többdimenziós tömbök
Az egydimenziós tömbökön felül az Apache OpenOffice Basic támogatja a többdimenziós tömbök használatát. A dimenziókat vesszővel kell elválasztani. A
Dim SajatEgeszTomb(5, 5) As Integer
példa egy integer (egész szám) tömböt definiál két dimenzióval, mindegyiket 6 indexszel (amelyek a 0-5 indexszel érhetők el). Az egész tömb 6 x 6 = 36 integer (egész szám) értéket tartalmazhat.
Annak ellenére, hogy több száz dimenziót is definiálhatunk az Apache OpenOffice Basic-tömbökben, a dimenziók számát a rendelkezésre álló memória korlátozza.
A tömbdimenziók dinamikus módosítása
Az előző példákban a tömböknek egy adott méretük volt. Létrehozhatunk viszont olyan tömböket is, ahol a dimenziók dinamikusan módosulnak. Például definiálhatunk egy tömböt, amely egy adott szöveg A betűvel kezdődő szavait fogja tartalmazni. Mivel ez a szám előzetesen nem ismert, a tömb határait menet közben módosítanunk kell. Ehhez az Apache OpenOffice Basic a következő utasítást biztosítja:
ReDim SajatTomb(10)
A következő példa módosítja az eredeti tömbdimenziókat, így tömb 11 vagy 21 értéket tartalmazhat.
Dim SajatTomb(4) As Integer ' Deklaráció öt elemmel
' ...
ReDim SajatTomb(10) As Integer ' Növelés 11 elemre
' ...
ReDim SajatTomb(20) As Integer ' Növelés 21 elemre
Ha újra beállítjuk egy tömb dimenzióit, akkor bármelyiket használhatjuk az előző részekben ismertetett lehetőségek közül. Ez magában foglalja a többdimenziós tömbök deklarálását és a kezdő és befejező értékek megadását is. Ha a tömb dimenziói módosulnak, minden adata elveszik. Ha meg akarjuk tartani az eredeti értékeket, használjuk a Preserve parancsot.
Dim SajatTomb(10) As Integer ' A kezdeti dimenziók
' definiálása
' ...
ReDim Preserve SajatTomb(20) As Integer ' Dimenzió növelése
' a tartalom megtartása
' mellett
Ha a Preserve parancsot használjuk, győződjünk meg róla, hogy a dimenziók száma és a változók típusa ugyanaz marad.
A VBA-val ellentétben, ahol csak a tömb utolsó dimenziójának felső korlátja módosítható a Preserve paranccsal, az Apache OpenOffice Basic megengedi a többi dimenzió módosítását is. |
Ha a ReDim parancsot a Preserve paranccsal együtt használjuk, ugyanazt az adattípust kell használnunk, amelyet az eredeti deklarációban.
Tömbök értékeinek definiálása
A tömbök értékei a következő módon tárolhatók:
SajatTomb(0) = "érték"
Tömbök elérése
A tömbök értékeinek elérése így oldható meg:
MsgBox("Érték:" & SajatTomb(0))
Példa tömb létrehozására, értékadásra és hozzáférésre
A példa bemutatja a valódi tömbkezelés minden lépését:
Sub TestArrayAxess Dim SajatTomb(3) SajatTomb(0) = "lala" MsgBox("Érték:" & SajatTomb(0)) End Sub
Content on this page is licensed under the Public Documentation License (PDL). |