Differenze tra le versioni di "Modificare un carattere di una stringa"

Da Gambas-it.org - Wikipedia.
Riga 12: Riga 12:
 
    
 
    
 
   Print s
 
   Print s
 +
 
 +
'''End'''
 +
 +
==Uso dei ''Memory Stream''==
 +
Questa modalità è più complessa, e prevede l'azione in scrittura su un Puntatore ad una variabile di tipo ''Stringa'' mediante i ''Memory Stream'':
 +
 +
'''Public Sub Main() 
 +
 +
  Dim p As Pointer 
 +
  Dim st As Stream 
 +
  Dim s As String 
 +
 
 +
<FONT Color=gray>' ''Assegnamo del testo alla variabile di tipo "String":''</font>
 +
  s = "aaazbbbzccczddd" 
 +
   
 +
<FONT Color=gray>' ''Assegnamo l'indirizzo di memoria della variabile "s" ad una variabile di tipo Puntatore:''</font>
 +
  p = VarPtr(s) 
 +
 +
<FONT Color=gray>' ''Generiamo dalla variabile "Puntatore" una variabile di tipo "Stream" in scrittura:''</font>
 +
  st = Memory p For Write 
 +
 
 +
<FONT Color=gray>' ''Scriviamo ora il valore del codice ASCII corrispondente allo "spazio" nel byte di indice 7 dell'area di memoria puntata dal Puntatore:''</font>
 +
  Seek #st, 7
 +
  Write #st, &20 As Byte 
 +
 
 +
<FONT Color=gray>' ''Chiudiamo il flusso:''</font>
 +
  st.Close 
 +
 
 +
<FONT Color=gray>' ''...vediamo nella variabile "s" la modifica apportata:''</font>
 +
  Print s 
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 10:13, 9 gen 2017

Per modificare un carattere all'interno di una data stringa, è possibile adottare diverse modalità.

Uso della funzione Mid( )

La modalità più semplice è quella che prevede la funzione Mid( ), la quale è preposta ad individuare appunto uno o più caratteri in una stringa. [ Nota 1]

Mostriamo un semplice esempio, nel quale avendo questa unica stringa "aaazbbbzccczddd", si modificherà la seconda lettera "z" in uno spazio usando appunto la funzione Mid( ):

Public Sub Main()
  
 Dim s As String = "aaazbbbzccczddd"
 
  Mid$(s, 8, 1) = " "
 
  Print s
  
End

Uso dei Memory Stream

Questa modalità è più complessa, e prevede l'azione in scrittura su un Puntatore ad una variabile di tipo Stringa mediante i Memory Stream:

Public Sub Main()  

 Dim p As Pointer  
 Dim st As Stream  
 Dim s As String  
  
' Assegnamo del testo alla variabile di tipo "String":
  s = "aaazbbbzccczddd"  
   
' Assegnamo l'indirizzo di memoria della variabile "s" ad una variabile di tipo Puntatore:
  p = VarPtr(s)  

' Generiamo dalla variabile "Puntatore" una variabile di tipo "Stream" in scrittura:
  st = Memory p For Write  
 
' Scriviamo ora il valore del codice ASCII corrispondente allo "spazio" nel byte di indice 7 dell'area di memoria puntata dal Puntatore:
  Seek #st, 7 
  Write #st, &20 As Byte  
  
' Chiudiamo il flusso:
  st.Close  
  
' ...vediamo nella variabile "s" la modifica apportata:
  Print s  
  
End



Note

[1] Questa modalità è stata proposta dal membro Gianluigi del forum gambas-it.org .