Differenze tra le versioni di "Porre a zero i valori contenuti da un Vettore"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per porre a zero uno o più valori contenuti da un ''Vettore'', si potranno adottare almeno tre modalità. ==Uso del metodo ''.Fill()'' della variabile vettoriale== Si potr...')
 
Riga 71: Riga 71:
 
   bzero(bb.Data + 2, 4)
 
   bzero(bb.Data + 2, 4)
 
   
 
   
  <FONT Color=gray>' ''Torniamo a vedere in console il risultato:''</font>
+
  <FONT Color=gray>' ''Vediamo in console il risultato:''</font>
 
   For Each b In bb
 
   For Each b In bb
 
     Print b
 
     Print b

Versione delle 09:46, 17 lug 2015

Per porre a zero uno o più valori contenuti da un Vettore, si potranno adottare almeno tre modalità.


Uso del metodo .Fill() della variabile vettoriale

Si potrà fare uso del metodo .Fill() della variabile vettoriale, il quale riempie di un dato valore uno o più elementi della predetta variabile.


Mostriamo un semplice esempio, nel quale azzereremo quattro elementi di un Vettore:

Public Sub Main()

 Dim b As Byte
 Dim bb As Byte[] = [1, 2, 3, 4, 5, 6, 7, 8, 9]

  bb.Fill(0, 3, 4)

' Vediamo in console il risultato:
  For Each b In bb
    Print b
  Next

End


Uso dei Memory Stream

Come sappiamo la risorsa Memory Stream consente di scrivere nell'area di memoria puntata da una variabile di tipo Puntatore. Utilizzando la proprietà .Data di una variabile vettoriale, potremo azzerare uno o più valori presenti nel Vettore.


Mostriamo un semplice esempio:

Public Sub Main()

 Dim bb As Byte[] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
 Dim st As Stream
 Dim b As Byte
 
  st = Memory bb.Data For Write

' Azzeriamo quattro valori di seguito cominciando dal byte di indice 2:
  Seek #st, 2
  For b = 1 to 4
   write #st, 0 As Byte
  Next

' Vediamo in console il risultato:
  For Each b In bb
    Print b
  Next
  
  st.Close
 
End


Uso della funzione esterna bzero() della libreria di C

La terza modalità prevede l'uso della funzione esterna bzero() della libreria di C, e della proprietà .Data della variabile vettoriale.


Ne mostriamo un esempio:

' void bzero (void *__s, size_t __n)
' Set N bytes of S to 0.
Private Extern bzero(sP As Pointer, size As Integer) In "libc:6"


 Public Sub Main()

 Dim bb As Byte[] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
 Dim b As Byte

' Ora azzeriamo quattro valori di seguito cominciando dal byte di indice 2:
  bzero(bb.Data + 2, 4)

' Vediamo in console il risultato:
  For Each b In bb
    Print b
  Next

End