Differenze tra le versioni di "Funzione simile a String.Len()"

Da Gambas-it.org - Wikipedia.
 
Riga 4: Riga 4:
 
<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)
+
  '''Private''' Function LungStringa(s As String) As Integer
 
    
 
    
   Dim s As String
+
   Dim s As Pointer
 
   Dim i As Integer
 
   Dim i As Integer
    
+
   While Byte@(Alloc(s) + i) > 0
+
   p = Alloc(s)
 +
 +
   While Byte@(p + i) > 0
 
     Inc i
 
     Inc i
 
   Wend
 
   Wend
 
   
 
   
   Print "La stringa è lunga : "; i; " caratteri."
+
   Free(p)
 +
 +
  Return i
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione attuale delle 19:03, 11 mag 2023

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 s As Pointer
 Dim i As Integer

 p = Alloc(s)

 While Byte@(p + i) > 0
   Inc i
 Wend

 Free(p)

 Return i
  
End