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

Da Gambas-it.org - Wikipedia.
 
(10 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
Per azzerare tutti gli elementi di una variabile vettoriale (''array'') di tipo ''Stringa'', è possibile utilizzare almeno le modalità che di seguito si espongono.
 
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==
 
==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"]  
 
   Dim b As Byte
 
   Dim b As Byte
 +
   
 +
  For b = 0 To ss.Max
 +
    ss[b] = Null
 +
  Next
 
   
 
   
   
+
  End
    For b = 0 To ss.Max
+
oppure:
 
+
  Public Sub Main()
      ss[b] = Null
 
 
    Next
 
   
 
'''End'''
 
 
 
 
 
  '''Public''' Sub Button1_Click()
 
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim b As Byte
 
   Dim b As Byte
 
   
 
   
   
+
  While b < ss.Count   <FONT color=gray>' ''Il ciclo continua finché "b" è minore di 5''</font>
    While b < 5   <FONT color=gray>' ''Il ciclo continua finché "b" è minore di 5''</font>
+
    ss[b] = Null
 
+
    Inc b
      ss[b] = Null
+
  Wend
 
   
 
   
      Inc b
+
  End
+
oppure:
    Wend
+
  Public Sub Main()
   
 
'''End'''
 
 
 
 
 
  '''Public''' Sub Button1_Click()
 
 
   
 
   
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim ss As String[] = ["a", "b", "c", "d", "e"]
 
   Dim b As Byte
 
   Dim b As Byte
 
   
 
   
   
+
  Repeat
    Do
+
    ss[b] = Null
 
+
    Inc b
      ss[b] = Null
 
 
      Inc b
 
 
 
  <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
+
  Until b = ss.Count
 
   
 
   
  '''End'''
+
  End
  
  
==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
  
  
==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"
+
  Library "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) As Pointer
 +
 +
<FONT color=gray>' ''void exit(int status)''
 +
' ''Terminates the calling process immediately. Any open file descriptors belonging to the process are closed.''</font>
 +
Private Extern exit_C(status As Integer) Exec "exit"
 
   
 
   
 
   
 
   
  '''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"]
  Dim b As Byte
+
  Dim b As Byte
 
    
 
    
+
  <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.Data, 0, ss.Count * SizeOf(gb.String))
    memset(ss, Null, ss.Count * SizeOf(gb.String))
 
 
    
 
    
 
  <FONT color=gray>' ''Verifichiamo in console il risultato:''</font>
 
  <FONT color=gray>' ''Verifichiamo in console il risultato:''</font>
    For b = 0 To ss.Max
+
  For b = 0 To ss.Max
      Print ss[b]
+
    Print IsNull(ss[b])
    Next
+
  Next
 +
 +
  exit_C(0)
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 16:33, 29 giu 2024

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