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