FillMemory




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

'funzione 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.










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