Differenze tra le versioni di "Porre a "Null" tutti gli elementi di un vettore di tipo Stringa"
Da Gambas-it.org - Wikipedia.
(7 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 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 | |
− | + | oppure: | |
− | + | 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 | ||
− | + | While b < ss.Count <FONT color=gray>' ''Il ciclo continua finché "b" è minore di 5''</font> | |
− | + | ss[b] = Null | |
− | + | Inc b | |
− | + | Wend | |
− | + | End | |
− | + | oppure: | |
− | + | 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 | ||
− | + | Repeat | |
− | + | 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> | ||
− | + | Until b = ss.Count | |
− | + | End | |
− | ==Modalità con il | + | ==Modalità con il Metodo ".Fill()"== |
− | + | Public Sub Main() | |
− | |||
− | |||
+ | Dim ss As String[] = ["a", "b", "c", "d", "e"] | ||
ss.Fill(Null, 0, ss.Count) | ss.Fill(Null, 0, ss.Count) | ||
− | + | End | |
− | ==Modalità con la funzione esterna di C | + | ==Modalità con la funzione esterna di C "memset()"== |
− | E' possibile utilizzare anche la funzione esterna di C | + | 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" | ||
<FONT color=gray>' ''void *memset(void *str, int c, size_t n)'' | <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> | + | ' ''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 | + | 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 Main() | |
− | + | Dim ss As String[] = ["a", "b", "c", "d", "e"] | |
− | + | 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)) |
− | |||
<FONT color=gray>' ''Verifichiamo in console il risultato:''</font> | <FONT color=gray>' ''Verifichiamo in console il risultato:''</font> | ||
− | + | For b = 0 To ss.Max | |
− | + | Print IsNull(ss[b]) | |
− | + | Next | |
+ | |||
+ | exit_C(0) | ||
− | + | 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