ArrayBoolean




Declare Sub FillMemory Lib "kernel32" Alias _
"RtlFillMemory" ( BlockToFill As Any, ByVal dwSize _
As Long, ByVal chValue As Byte)

'Riempie un array di Boolean col valore specificato usando

'la API 'FillMemory


Public Sub FillArrayBool(bArray() As Boolean, ByVal _
bValue As Boolean)

Dim lPrimo As Long, lUltimo As Long, lElementi As Long
Dim iSize As Integer, chValue As Byte

lPrimo = LBound(bArray)
lUltimo = UBound(bArray)
lElementi = lUltimo - lPrimo + 1
iSize = Len(bArray(lPrimo))

If bValue Then
chValue = 255 '&HFF: se bValue = False chValue = 0
End If

FillMemory bArray(lPrimo), lElementi * iSize, chValue

End Sub Possiamo usare la funzione API FillMemory per copiare un
valore (byte) su un blocco di memoria, che potrebbe essere
un array o parte di esso.

Il tipo Boolean e' formato in realta' da due valori Integer:
True (- 1) e False (0). Siccome ogni elemento di un array
Boolean occupa 2 byte, esso e' facilmente riempibile con
coppie di zeri (False) o coppie di &HFF
(che diventano &HFFFF, cioe' -1 = True).

Ecco una funzione che esegue il riempimento dell'intero
array Boolean, modificabile per consentire anche il
riempimento di una parte dell'array.

Da questa funzione se ne puo' ricavare facilmente un'altra
per gestire array di Byte.

Questa funzione e' circa il doppio piu' veloce di un ciclo
For/Next con assegnazione.










( arrayboolean.html )- by Paolo Puglisi - Modifica del 17/12/2023