Spanish Remplazar caracter en un Archivo

alexandercolbasic

Member
Licensed User
Longtime User
Un saludo amigos , abro este thread para hacer el siguiente interrogante , porque llevo dias buscando en el foro y tratando de todas formas y no he podido aun , el problema que tengo es este.

Tengo un archivo que se llama "ejemplo.dat" , ese archivo contiene la siguiente informacion que son 4 registros :

1234T
5678T
9101T
1458T

Lo que necesito es que dependiendo de algun evento que suceda en la App me remplaze un caracter de una fila, por ejemplo las T por M quedando el archivo de la siguiente forma :


1234T
5678T
9101M (Aqui replazo la T por M)
1458T

y me remplace esa informacion en el archivo que ya tengo en DirInternal.


Lo he intentado con WriteObject pero no se como ubicarme en el Index(fila) exacto que quiero remplazar.

Tambien me podrian informar si hay alguna forma de borrar una Fila de ese archivo ?? que por ejemplo quede de la siguiente manera :


1234T
Fila Borrada
9101T
1458T


Muchas Gracias por su tiempo , un abrazo
 
D

Deleted member 30048

Guest
Hola, ¿Como escribes la información en el archivo?

Yo lo hago utilizando un mapa. Para crear el archivo lo haría de la siguiente manera:

B4X:
Dim Mapa As Map
Mapa.Initialize
Mapa.Put("Valor1",1234T)  'Introducimos en el mapa el primer valor donde "Valor1" es la clave y 1234T es el contenido
Mapa.Put("Valor2",5678T)
Mapa.Put("Valor3",9101T)
Mapa.Put("Valor4",1458T)
File.WriteMap(File.DirInternal,"ejemplo.dat",Mapa) 'Escribimos el mapa en el archivo ejemplo.dat

Si lo haces así es muy fácil reemplazar valores, si no lo haces así te lo recomiendo. Luego para reemplazar el valor se hace de la siguiente manera:

B4X:
Dim Mapa As Map
Mapa.Initialize
Mapa = File.ReadMap(File.DirInternal,"ejemplo.dat") 'Leemos el archivo y lo cargamos en el mapa.
Mapa.Put("Valor3",9101M) 'Modificamos el valor3 que antes era 9101T por 9101M
File.WriteMap(File.DirInternal,"ejemplo.dat",Mapa) 'Volvemos a escribir el mapa modificado en el archivo.

Para borrar la fila del archivo, lo suyo sería utilizar ya bases de datos en sql pero si no quieres existen otras alternativas como escribir el valor por -1 e ignorar aquellos valores que tengan este valor o leer el archivo en un mapa, borrar el archivo, cargar los valores del mapa en variables, escribir las variables que deseas escribir en un nuevo mapa y escribir ese mapa al archivo otra vez.

Saludos!
 
Last edited by a moderator:

alexandercolbasic

Member
Licensed User
Longtime User
Un saludo Cbc551 , muchas gracias por tu respuesta de verdad que me ayudas bastante , el archivo no lo creo por medio del algoritmo , el archivo lo creo en el Notepad o sea que segun el ejemplo que doy el archivo ya existe y tiene un tamaño fijo, yo solo trato de cambiar un caracter de una de las filas , con el ejemplo que me das me enseñaste una forma de hacerlo , pero si pasa como en mi ejemplo que es solo un archivo sin clave ("Valor1" en tu ejemplo) , como hariamos ?

Saludos !
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Si lo has escrito con el notepad y lo has echo con lineas puedes leerlo asi:

B4X:
Dim List1 As List
List1 = File.ReadList(File.DirInternal, "ejemplo.dat")

' en List1.Get(0) viene la primera linea y asi hasta el list1.Size que te dirá la cantidad de lineas, recuerda que la primera es la 0, asi que la ultima será list1.Size-1

Luego cambias la linea y lo escribes asi:

B4X:
list1.InsertAt (indice,texto cambiado) ' pones el nuevo texto en la linea que te interese
File.WriteList(File.DirInternal, "ejemplo.dat", List1)

Ten en cuanta una cosa, al escribirlo no lo escribirá con lineas una debajo de otra, si no asi:
[1234T, 5678T] , pero si luego lo lees lo leerá bien, simplemente te cambiara el formato.

saludos
 
Last edited:
Cookies are required to use this site. You must accept them to continue using the site. Learn more…