Differenze tra le versioni di "Porre a "Null" tutti gli elementi di un vettore di tipo Stringa"
Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per azzerare tutti gli elementi di una variabile vettoriale (''array'') di tipo ''Stringa'', è possibile utilizzare almeno le modalità che di seguito si espongono. ==Modal...') |
|||
(12 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== | |
− | == | + | 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 b As Byte | |
− | |||
+ | Repeat | ||
+ | ss[b] = Null | ||
+ | Inc b | ||
+ | <FONT color=gray>' ''Il ciclo continua finché "b" non è uguale a 5:''</font> | ||
+ | Until b = ss.Count | ||
+ | End | ||
+ | |||
− | ==Modalità con | + | ==Modalità con il Metodo ".Fill()"== |
− | + | 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, 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)'' | ||
+ | ' ''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 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