Difference between revisions of "HU/Documentation/BASIC Guide/Arrays"
Timarandras (Talk | contribs) (New page: {{HU/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=HU/Documentation/BASIC Guide/Date |NextPage=HU/Documentation/BASIC Guide/Scope of Variables |lang=bloc...) |
|||
Line 49: | Line 49: | ||
* Az elemek maximális száma (egy tömbdimenzión belül) 16368. | * Az elemek maximális száma (egy tömbdimenzión belül) 16368. | ||
− | {{ | + | {{Note|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 kezdőindex értéke== | ||
Line 71: | Line 71: | ||
deklaráció létrehoz egy 4 integer (egész szám) változót, amelyek a következő kifejezésekkel írhatók le: <tt>SajatEgesz(1)</tt>, <tt>SajatEgesz(2)</tt>, <tt>SajatEgesz(3)</tt> és <tt>SajatEgesz(4)</tt>. | deklaráció létrehoz egy 4 integer (egész szám) változót, amelyek a következő kifejezésekkel írhatók le: <tt>SajatEgesz(1)</tt>, <tt>SajatEgesz(2)</tt>, <tt>SajatEgesz(3)</tt> és <tt>SajatEgesz(4)</tt>. | ||
− | {{ | + | {{Note|Az {{OOo}} Basic nyelvben az <tt>Option Base 1</tt> kifejezés nem befolyásolja a tömb elemeinek számát, mint a VBA-ban. Az {{OOo}} Basic nyelvben ehelyett inkább a kezdőindex változik. Míg a <tt>SajatEgesz(3)</tt> 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 {{OOo}} Basic nyelvben négy integer (egész szám) értéket hoz létre, az 1-4 indexszel. Az <tt>Option Compatible</tt> utasítás hatására az {{OOo}} Basic a VBA-val megegyező módon működik.}} |
==Többdimenziós tömbök== | ==Többdimenziós tömbök== | ||
Line 93: | Line 93: | ||
</source> | </source> | ||
− | {{ | + | {{Note|A VBA-val ellentétben, ahol a <tt>Dim SajatTomb()</tt> utasítással csak a dinamikus tömböket dimenzionálhatjuk, az {{OOo}} Basic nyelvben a statikus és a dinamikus tömböket is módosíthatjuk a <tt>ReDim</tt> 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. | A következő példa módosítja az eredeti tömbdimenziókat, így tömb 11 vagy 21 értéket tartalmazhat. | ||
Line 118: | Line 118: | ||
Ha a <tt>Preserve</tt> 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. | Ha a <tt>Preserve</tt> 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. | ||
− | {{ | + | {{Note|A VBA-val ellentétben, ahol csak a tömb utolsó dimenziójának felső korlátja módosítható a <tt>Preserve</tt> paranccsal, az {{OOo}} Basic megengedi a többi dimenzió módosítását is.}} |
Ha a <tt>ReDim</tt> parancsot a <tt>Preserve</tt> paranccsal együtt használjuk, ugyanazt az adattípust kell használnunk, amelyet az eredeti deklarációban. | Ha a <tt>ReDim</tt> parancsot a <tt>Preserve</tt> paranccsal együtt használjuk, ugyanazt az adattípust kell használnunk, amelyet az eredeti deklarációban. |
Latest revision as of 07:03, 7 July 2018
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). |