Funzione simile a String.Len()

Da Gambas-it.org - Wikipedia.
Versione del 19 mar 2016 alle 17:06 di Vuott (Discussione | contributi) (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...")

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

Come sappiamo, la funzione StringLen() 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 alla predetta funzione StringLen(), 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)
 
 Dim s As String
 Dim i As Integer
 
  While Byte@(VarPtr(s) + i) > 0
    Inc i
  Wend
  
  Print "La stringa è lunga : "; i; " caratteri."
  
End