10.05.2023 07:53

Co se děje ? Jak se pracuje v jazyce vzorců ? (2)
21.04.2023 14:15

Co se starou dokumentací k R3, R4, ...?
05.04.2023 14:41

Událost, při neexistenci přílohy. (2)
05.04.2023 11:51

Jak zjistit vložení přílohy. (4)
21.03.2023 11:14

Rámec nebo okno ? (10)
22.02.2023 10:14

Vylepseni designera 9.01 (3)
02.02.2023 20:27

Jak resit casove narocneho agent na frontendu (13)
25.01.2023 19:15

Běžně není možné v LotusScriptovém poli definovat více než 32768 prvků v jednom rozměru, tj. např. prvek(32769) již je vyhodnocen jako chybný. Toto omezení je možné obejít definicí třídy IntegerArray.
Definici třídy pro pole typu Integer je následující (je samozřejmě možné ji upravit i pro jiné typy než Integer) - metoda sample je jen ilustrační a naplní všechny prvky pole náhodnou hodnotou z intervalu 0 až 32767:
Class IntegerArray
n As Long
i As Long
i1 As Integer
i2 As Integer
q As Integer
a() As Integer
Sub new(n0 As Long)
n=n0
q=Sqr(n)
Redim a(q-1,q-1) As Integer
End Sub
Sub putitem(n0 As Long,v As Integer)
i1=Int(n0/q)
i2=n0 Mod q
a(i1,i2)=v
End Sub
Function getitem(n0 As Long) As Integer
i1=Int(n0/q)
i2=n0 Mod q
getitem=a(i1,i2)
End Function
Sub Sample
For i=0 To n-1
putitem i,Rnd*32767
Next
End Sub
End Class
A příklad, jak se třída používá:
Sub Initialize
Dim a As New IntegerArray (16000000) ' alokujeme celočíselné pole s 16 milióny prvky - pozor, je to celých 32MB paměti
a.sample ' naplníme pole náhodnými hodnotami
MsgBox a.getitem(489392) ' přečteme prvek na pozici 489392
a.putitem(8349294,19293) ' a uložíme hodnotu 19293 na do prvku číslo 8349294
End Sub
Celý příklad je jen nastíněním možného řešení problému, bylo by vhodné ošetřit normalizaci indexů (aby nemusely začínat na 0 nebo 1 - podle nastavení Option Base - ale od libovolného čísla), rovněž by bylo možné řešit metody třídy obecně a ne jen pro celočíselné prvky. V každém případě je ale třída i v daném stavu pro daný účel použitelná.
Zdroj: ITkey
Autor: Zdeněk Michálek
Datum: 01.06.2001
Sdílet článek Seznam komentářů
Zatím nebyl přidán žádný komentář. Buďte první!