Differenze tra le versioni di "Non visualizzare i caratteri non-stampabili di una stringa che inizia con caratteri stampabili"

Da Gambas-it.org - Wikipedia.
 
Riga 6: Riga 6:
  
 
Mostriamo un semplice esempio, il quale presuppone che la stringa da mostrare abbia <SPAN Style="text-decoration:underline">certamente</span> uno o più caratteri ''non-stampabili'' dopo quelli iniziali stampabili:
 
Mostriamo un semplice esempio, il quale presuppone che la stringa da mostrare abbia <SPAN Style="text-decoration:underline">certamente</span> uno o più caratteri ''non-stampabili'' dopo quelli iniziali stampabili:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String
 
   Dim s As String
Riga 13: Riga 13:
 
    
 
    
 
  <FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
 
  <FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
   s = "Testo iniziale<FONT Color=#B22222>\x00\x10\x12\x90\x91</font>"
+
   s = "Testo iniziale<FONT Color=red>\x00\x10\x12\x90\x91</font>"
 
    
 
    
 
   bb = Byte[].FromString(s)
 
   bb = Byte[].FromString(s)
Riga 27: Riga 27:
 
   Print bb.ToString(0, bb.Count)
 
   Print bb.ToString(0, bb.Count)
 
   
 
   
  '''End'''
+
  End
  
  
Riga 34: Riga 34:
  
 
Mostriamo un semplice esempio:
 
Mostriamo un semplice esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String
 
   Dim s As String
Riga 40: Riga 40:
 
    
 
    
 
  <FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
 
  <FONT Color=gray>' ''Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:''</font>
   s = "Testo iniziale<FONT Color=#B22222>\x00\x10\x12\x90\x91</font>"
+
   s = "Testo iniziale<FONT Color=red>\x00\x10\x12\x90\x91</font>"
 
   
 
   
 
  <FONT Color=gray>' ''Viene visualizzata la stringa con i caratteri non-stampabili:''</font>
 
  <FONT Color=gray>' ''Viene visualizzata la stringa con i caratteri non-stampabili:''</font>
 
   Print s
 
   Print s
 
   
 
   
  <FONT Color=gray>' ''Creiamo un "Puntatore" alla variabile di tipo Stringa:''</font>
+
  <FONT Color=gray>' ''Crea un "Puntatore" alla variabile di tipo Stringa:''</font>
 
   p = Alloc(s)
 
   p = Alloc(s)
 
    
 
    
  <FONT Color=gray>' ''Dereferenziamo il "Puntatore". Il risultato mostra "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:''</font>
+
  <FONT Color=gray>' ''Dereferenzia il "Puntatore". Il risultato mostra "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:''</font>
 
   Print String@(p)
 
   Print String@(p)
 
   
 
   
 
   Free(p)
 
   Free(p)
 
   
 
   
  '''End'''
+
  End
  
  

Versione attuale delle 16:27, 29 giu 2024

Se una stringa ha inizio con uno o più caratteri stampabili seguiti da uno o più caratteri non-stampabili, il primo dei quali sia lo zero (0x00), per far visualizzare i soli caratteri stampabili (ossia quelli iniziali della stringa), si potranno adottare almeno due modalità. [nota 1]


Ciclo sui dati di un vettore di tipo Byte[ ]

Con questa modalità si effettuerà un ciclo di verifica sul valore di ogni elemento di un vettore di tipo "Byte[ ]", nel quale sia stato caricata la stringa originaria. Non appena viene incontrato il byte di valore zero (&00), si eliminerà dal vettore quel byte fino alla fine, lasciando così solo i primi byte utili contenenti i valori ascii dei caratteri stampabili.

Mostriamo un semplice esempio, il quale presuppone che la stringa da mostrare abbia certamente uno o più caratteri non-stampabili dopo quelli iniziali stampabili:

Public Sub Main()

  Dim s As String
  Dim bb As Byte[]
  Dim b As Byte
 
' Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:
  s = "Testo iniziale\x00\x10\x12\x90\x91"
  
  bb = Byte[].FromString(s)
  
' Si procede ad eliminare dalla stringa originaria i caratteri "non-stampabili":
  While bb[b] > 0
    Inc b
  Wend

  bb.Remove(b, bb.Max - b)
   
' Il risultato mostra, dunque, "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:
  Print bb.ToString(0, bb.Count)

End


Uso di un Puntatore alla variabile di tipo Stringa

In questa modalità si utilizzerà un Puntatore alla variabile di tipo stringa contenente l'insieme di quei caratteri.

Mostriamo un semplice esempio:

Public Sub Main()

  Dim s As String
  Dim p As Pointer
 
' Ecco l'intera stringa originaria: i caratteri non-stampabili sono evidenziati in rosso:
  s = "Testo iniziale\x00\x10\x12\x90\x91"

' Viene visualizzata la stringa con i caratteri non-stampabili:
  Print s

' Crea un "Puntatore" alla variabile di tipo Stringa:
  p = Alloc(s)
 
' Dereferenzia il "Puntatore". Il risultato mostra "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:
  Print String@(p)

  Free(p)

End


Note

[1] Vedere anche le seguenti pagine: