Funzione simile a String.Len()

Da Gambas-it.org - Wikipedia.
Versione del 28 giu 2024 alle 17:25 di Vuott (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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