Differenze tra le versioni di "Porre a "Null" tutti gli elementi di un vettore di tipo Stringa"

Da Gambas-it.org - Wikipedia.
Riga 3: Riga 3:
  
 
==Assegnare il valore ''Null'' mediante un ciclo==
 
==Assegnare il valore ''Null'' mediante un ciclo==
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]  
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]  
Riga 18: Riga 18:
  
  
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
Riga 24: Riga 24:
 
   
 
   
 
      
 
      
     While b < 5   <FONT color=gray>' ''Il ciclo continua finché "b" è minore di 5''</font>
+
     While b < ss.Count   <FONT color=gray>' ''Il ciclo continua finché "b" è minore di 5''</font>
 
    
 
    
 
       ss[b] = Null
 
       ss[b] = Null
Riga 35: Riga 35:
  
  
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
Riga 48: Riga 48:
 
   
 
   
 
  <FONT color=gray>' ''Il ciclo continua finché "b" non è uguale a 5:''</font>
 
  <FONT color=gray>' ''Il ciclo continua finché "b" non è uguale a 5:''</font>
     Loop Until b = 5
+
     Loop Until b = ss.Count
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 54: Riga 54:
  
 
==Modalità con il metodo ''.Fill()''==
 
==Modalità con il metodo ''.Fill()''==
  '''Public''' Sub Button1_Click()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   
 
   
 
   
 
   
   ss.Fill(Null, 0, 5)
+
   ss.Fill(Null, 0, ss.Count)
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 66: Riga 66:
 
==Modalità con la funzione esterna di C: ''memset ()''==
 
==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.
 
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.
  '''Private''' Extern memset(dest As Byte[], c As Byte, count As Byte) In "libc:6"
+
  <FONT color=gray>' ''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.''</font>
 +
Private Extern memset(dest As Pointer, c As Integer, count As Integer) In "libc:6"
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
Riga 76: Riga 78:
 
   
 
   
 
  <FONT color=gray>' ''La funzione "memset" carica un valore in tutti i byte di un'area di memoria:''</font>
 
  <FONT color=gray>' ''La funzione "memset" carica un valore in tutti i byte di un'area di memoria:''</font>
     memset(ss, Null, ss.Count * SizeOf(gb.String))
+
     memset(ss.Data, Null, ss.Count * SizeOf(gb.String))
 
    
 
    
 
  <FONT color=gray>' ''Verifichiamo in console il risultato:''</font>
 
  <FONT color=gray>' ''Verifichiamo in console il risultato:''</font>

Versione delle 11:50, 26 gen 2015

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


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


Public Sub Main()

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

   
   Do
 
     ss[b] = Null

     Inc b

' Il ciclo continua finché "b" non è uguale a 5:
   Loop 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.

' 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) In "libc:6"


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, Null, ss.Count * SizeOf(gb.String))
 
' Verifichiamo in console il risultato:
   For b = 0 To ss.Max
     Print ss[b]
   Next

End