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

Da Gambas-it.org - Wikipedia.
(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...")
 
Riga 1: Riga 1:
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 una stringa secondo la codifica dei caratteri [https://it.wikipedia.org/wiki/Unicode Unicode]''.
+
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 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.
+
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.
Riga 9: Riga 9:
 
   Dim i As Integer
 
   Dim i As Integer
 
    
 
    
  While Byte@(VarPtr(s) + i) > 0
+
  While Byte@(Alloc(s) + i) > 0
    Inc i
+
    Inc i
  Wend
+
  Wend
 
+
  Print "La stringa è lunga : "; i; " caratteri."
+
  Print "La stringa è lunga : "; i; " caratteri."
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 18:00, 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)
 
 Dim s As String
 Dim i As Integer
 
 While Byte@(Alloc(s) + i) > 0
   Inc i
 Wend

 Print "La stringa è lunga : "; i; " caratteri."
  
End