Tömbök

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Book.png


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.
Documentation note.png 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).

Documentation note.png Az Apache OpenOffice Basic nyelvben az Option Base 1 kifejezés nem befolyásolja a tömb elemeinek számát, mint a VBA-ban. Az Apache OpenOffice Basic nyelvben ehelyett inkább a kezdőindex változik. Míg a SajatEgesz(3) három integer (egész szám) értéket hoz létre a VBA-ban, az 1-3 indexszel, addig ugyanaz a deklaráció az Apache OpenOffice Basic nyelvben négy integer (egész szám) értéket hoz létre, az 1-4 indexszel. Az Option Compatible utasítás hatására az Apache OpenOffice Basic a VBA-val megegyező módon működik.

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)
Documentation note.png A VBA-val ellentétben, ahol a Dim SajatTomb() utasítással csak a dinamikus tömböket dimenzionálhatjuk, az Apache OpenOffice Basic nyelvben a statikus és a dinamikus tömböket is módosíthatjuk a ReDim utasítással.

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.

Documentation note.png 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).



Personal tools