Bueno,
como sabemos, el recurso de los Memory Stream permite leer o escribir dentro de un área reservada de memoria apuntada por una variable de tipo Pointer. Más en general, los Punteros permiten obrar dentro de un área de memoria, allocata de nosotros o allocata de otro recurso.
Será pues posible a través de las variables de tipo Pointer y de tipo Stream modificar a uno o más carácteres de un texto contenido en una variable de tipo String.
Ejemplo:
Public Sub Main()
Dim p As Pointer
Dim st As Stream
Dim s As String
' Asignamos un texto a la variable de tipo "String":
s = "gambas"
' Asignamos la variable "s" a un "Puntero":
p = VarPtr(s)
' Creamos la variable de tipo "Stream" para escribir:
st = Memory p For Write
' Vamos ahora a escribir un valor (por ejemplo el carácter de "fin raya") en el 4° byte del área de memoria apuntada por la variable "s":
Seek #st, 3
Write #st, &0A As Byte
' Cerramos el flujo:
st.Close
' ...vamos a ver en la variable String "s" la modificación:
Print s
End
Dim p As Pointer
Dim st As Stream
Dim s As String
' Asignamos un texto a la variable de tipo "String":
s = "gambas"
' Asignamos la variable "s" a un "Puntero":
p = VarPtr(s)
' Creamos la variable de tipo "Stream" para escribir:
st = Memory p For Write
' Vamos ahora a escribir un valor (por ejemplo el carácter de "fin raya") en el 4° byte del área de memoria apuntada por la variable "s":
Seek #st, 3
Write #st, &0A As Byte
' Cerramos el flujo:
st.Close
' ...vamos a ver en la variable String "s" la modificación:
Print s
End