Porre a "Null" tutti gli elementi di un vettore di tipo Stringa

Da Gambas-it.org - Wikipedia.

Per azzerare tutti gli elementi di una variabile vettoriale (array) di tipo Stringa, è possibile utilizzare almeno le modalità che di seguito si espongono.

Assegnare il valore Null mediante un ciclo

Public Sub Main()

  Dim ss As String[] = ["a", "b", "c", "d", "e"] 
  Dim b As Byte
    
  For b = 0 To ss.Max 
    ss[b] = Null
  Next

End

oppure:

Public Sub Main()

  Dim ss As String[] = ["a", "b", "c", "d", "e"]
  Dim b As Byte

  While b < ss.Count   ' Il ciclo continua finché "b" è minore di 5
    ss[b] = Null
    Inc b
  Wend

End

oppure:

Public Sub Main()

  Dim ss As String[] = ["a", "b", "c", "d", "e"]
  Dim b As Byte

  Repeat
    ss[b] = Null
    Inc b
' Il ciclo continua finché "b" non è uguale a 5:
  Until b = ss.Count

End


Modalità con il metodo .Fill()

Public Sub Main()

 Dim ss As String[] = ["a", "b", "c", "d", "e"]

 ss.Fill(Null, 0, ss.Count)

End


Modalità con la funzione esterna di C: memset ()

E' possibile utilizzare anche la funzione esterna di C: "memset()", dichiarando sia la funzione medesima mediante Extern, sia la libreria C, nella quale essa è contenuta.

Library "libc:6"
' void *memset(void *str, int c, size_t n)
' Copies the character c (an unsigned char) to the first n characters of the string pointed to by the argument "str".
Private Extern memset(dest As Pointer, c As Integer, count As Integer) As Pointer

' void exit(int status)
' Terminates the calling process immediately. Any open file descriptors belonging to the process are closed.
Private Extern exit_C(status As Integer) Exec "exit"


Public Sub Main()

 Dim ss As String[] = ["a", "b", "c", "d", "e"]
 Dim b As Byte
 
' La funzione "memset" carica un valore in tutti i byte di un'area di memoria:
 memset(ss.Data, 0, ss.Count * SizeOf(gb.String))
 
' Verifichiamo in console il risultato:
 For b = 0 To ss.Max
   Print IsNull(ss[b])
 Next

 exit_C(0) 

End