Sun Microsystems
Termékek
 
Támogatás
 
 

Előző Előző     Tartalom     Tárgymutató     Következő Következő

Adatmezők

Az egyszerű (skaláris) változók mellett a StarOffice Basic támogatja az adatmezők (tömbök) használatát is. Egy adatmező számos változóból áll, amelyeket egy indexen keresztül lehet elérni.

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)

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)

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.


Megjegyzés - 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 a StarOffice 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).


Megjegyzés - A StarOffice Basic programban az Option Base 1 kifejezés nem befolyásolja a tömb elemeinek számát, mint a VBA-ban. A StarOffice Basic programban 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ó a StarOffice Basic programban 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 a StarOffice 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 a StarOffice Basic program 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)

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 a StarOffice 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 a StarOffice Basic a következő utasítást biztosítja:

ReDim SajatTomb(10)


Megjegyzés - A VBA-val ellentétben, ahol a Dim SajatTomb() utasítással csak a dinamikus tömböket dimenzionálhatjuk, a StarOffice Basic programban 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.


Megjegyzés - A VBA-val ellentétben, ahol csak a tömb utolsó dimenziójának felső korlátja módosítható a Preserve paranccsal, a StarOffice Basic programban a többi dimenzió is módosítható.

Ha a ReDim parancsot a Preserve paranccsal együtt használjuk, ugyanazt az adattípust kell használnunk, amelyet az eredeti deklarációban.


Változók hatásköre és élettartama

A StarOffice Basic programban a változóknak korlátozott élettartamuk van, és korlátozott hatáskörük, amelyben beolvashatók és használhatók más programrészekből. A változó élettartama és az, hogy honnan érhető el, az adott változó helyétől és típusától függ.

Helyi változók

A függvényben vagy eljárásban deklarált változókat helyi változóknak nevezik:

Sub Teszt

   Dim SajatEgesz As Integer



   ' ...

End Sub

A helyi változók csak addig érvényesek, amíg az adott függvény vagy eljárás fut, utána az értékük visszaáll nullára. A függvény minden meghívásakor az előzőleg tárolt értékek már nem érhetők el.

Az előző értékek megtartásához a változót a Static típusúnak kell definiálni:

Sub Teszt

   Static SajatEgesz As Integer



   ' ...



End Sub


Előző Előző     Tartalom     Tárgymutató     Következő Következő