Differenze tra le versioni di "Funzione simile a String.Len()"
(Creata pagina con "Come sappiamo, la funzione ''StringLen()'' restituisce la lunghezza di una stringa in [https://it.wikipedia.org/wiki/UTF-8 UTF-8], ossia il numero di caratteri contenuti in un...") |
|||
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Come sappiamo, | + | Come sappiamo, il Metodo "String.Len()" restituisce la lunghezza di una stringa in [https://it.wikipedia.org/wiki/UTF-8 UTF-8], ossia il numero di caratteri contenuti in una stringa secondo la codifica dei caratteri [https://it.wikipedia.org/wiki/Unicode Unicode]''. |
− | Possiamo scrivere una Funzione in linguaggio Gambas che opera in modo simile | + | Possiamo scrivere una Funzione in linguaggio Gambas che opera in modo simile al predetto Metodo "String.Len()", usando e dereferenziando i ''Puntatori''. Infatti una stringa è per lo più un ''Puntatore'' inizilizzato que punta ad un'area di memoria contnente i valori corrispondenti ai caratteri del testo. Noi posiamo muoverci all'interno di quell'area come fosse una sorta di flusso di dati o una sorta di vettore. |
<BR>La Funzione consiste nel verificare mediante un ciclo ogni cella di memoria, appartenente all'area di memoria della stringa e puntata dalla variabile di tipo ''Puntatore''. | <BR>La Funzione consiste nel verificare mediante un ciclo ogni cella di memoria, appartenente all'area di memoria della stringa e puntata dalla variabile di tipo ''Puntatore''. | ||
<BR>Le stringhe terminano all'interno della propria area di memoria con il valore '\0' (&00). Dereferenziando, dunque, il ''Puntatore'' all'area di memoria della Stringa, se la cella di memoria, in quel momento puntata, contiene il valore zero, allora il programma esce dal ciclo. | <BR>Le stringhe terminano all'interno della propria area di memoria con il valore '\0' (&00). Dereferenziando, dunque, il ''Puntatore'' all'area di memoria della Stringa, se la cella di memoria, in quel momento puntata, contiene il valore zero, allora il programma esce dal ciclo. | ||
− | + | Private Function LungStringa(s As String) As Integer | |
− | Dim | + | Dim p As Pointer |
Dim i As Integer | Dim i As Integer | ||
− | + | ||
− | + | p = Alloc(s) | |
− | + | ||
− | + | While Byte@(p + i) > 0 | |
− | + | Inc i | |
− | + | Wend | |
+ | |||
+ | Free(p) | ||
+ | |||
+ | Return i | ||
− | + | End |
Versione attuale delle 17:25, 28 giu 2024
Come sappiamo, il Metodo "String.Len()" restituisce la lunghezza di una stringa in UTF-8, ossia il numero di caratteri contenuti in una stringa secondo la codifica dei caratteri Unicode.
Possiamo scrivere una Funzione in linguaggio Gambas che opera in modo simile al predetto Metodo "String.Len()", usando e dereferenziando i Puntatori. Infatti una stringa è per lo più un Puntatore inizilizzato que punta ad un'area di memoria contnente i valori corrispondenti ai caratteri del testo. Noi posiamo muoverci all'interno di quell'area come fosse una sorta di flusso di dati o una sorta di vettore.
La Funzione consiste nel verificare mediante un ciclo ogni cella di memoria, appartenente all'area di memoria della stringa e puntata dalla variabile di tipo Puntatore.
Le stringhe terminano all'interno della propria area di memoria con il valore '\0' (&00). Dereferenziando, dunque, il Puntatore all'area di memoria della Stringa, se la cella di memoria, in quel momento puntata, contiene il valore zero, allora il programma esce dal ciclo.
Private Function LungStringa(s As String) As Integer Dim p As Pointer Dim i As Integer p = Alloc(s) While Byte@(p + i) > 0 Inc i Wend Free(p) Return i End