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 14: Riga 14:
 
  <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=#B22222>\x00\x10\x12\x90\x91</font>"
 +
 
 +
  bb = Byte[].FromString(s)
 +
 
 +
<FONT Color=gray>' ''Si procede ad eliminare dalla stringa originaria i caratteri "non-stampabili":''</font>
 +
  While bb[b] > 0
 +
    Inc b
 +
  Wend
 
   
 
   
<FONT Color=gray>' ''Viene visualizzata la stringa con i caratteri non-stampabili:''</font>
+
   bb.Remove(b, bb.Max - b)
   With bb = Byte[].FromString(s)
+
   
    For b = 0 To bb.Max
+
  <FONT Color=gray>' ''Il risultato mostra, dunque, "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:''</font>
      If bb[b] = 0 Then
 
        bb.Remove(b, bb.Max - b)
 
        Exit
 
      Endif
 
    Next
 
  End With
 
 
  <FONT Color=gray>' ''Il risultato mostra "solo" i primi caratteri - quelli "stampabili" - della stringa originaria:''</font>
 
 
   Print bb.ToString(0, bb.Count)
 
   Print bb.ToString(0, bb.Count)
 
   
 
   

Versione delle 09:16, 22 mag 2015

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à.


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

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

  Free(p)

End