como posicionarme en una determinada linea de un archivo de texto?

Iniciado por Sai-To, 13 Mayo 2008, 12:58 PM

0 Miembros y 1 Visitante están viendo este tema.

Sai-To

Saludos, bueno mi duda es la siguiente si yo tengo un archivo .txt y en el tengo esto:

carlos
ana
pedro
jose
juan


y quiero posicionarme en la primera linea de este archivo, osea en carlos, luego cuadno este posicionado borrar ese carlos y reemplazarlo por otro nombre como maria...
Como puedo hacer esto?

Gracias desde ya! ;)

xavierote

Yo ese trabajo lo haría de la siguiente manera:
    Abrimos el archivo y lo guardamos en una Matriz separado por líneas.
    Accedemos a la posición que queremos cambiar y lo hacemos.
    Guardamos el archivo.

Private Sub Command1_Click()
    Dim Texto       As String
    Dim Separado()  As String  'Array para separar el texto en lineas
    Dim foo         As Integer
    Dim i           As Integer
   
    foo = FreeFile
   
    Open "C:\archivo.txt" For Input As #foo  'Abrimos el archivo en modo lectura
        Texto = Input(LOF(foo), #foo)     'Obtenemos el contenido del archivo
    Close #foo
    Separado = Split(Texto, vbCrLf)    'Metemos en el Array el contenido del archivo separado por líneas
   
    'Cambiamos la línea que quieras, en este caso la segunda línea   
    If UBound(Separado) > 2 Then    'Miramos si la segunda línea existe
        Separado(2) = "Cambiado"     'Substituímos
    End If
   
    'Guardamos todo el contenido nuevo en el archivo
    Open "C:\archivo.txt" For Output As #foo
        For i = 0 To UBound(Separado)
            Print #foo, Separado(i)
        Next i
    Close #foo
   
End Sub


¡Un saludo!

Sai-To

jaja man gracias este code si funciona pero si es para la 1 linea osea para carlos? como lo haria!:P

xavierote

Cita de: brache en 13 Mayo 2008, 20:50 PM
jaja man gracias este code si funciona pero si es para la 1 linea osea para carlos? como lo haria!:P

Pues para la primera línea simplemente cambiamos el valor de Separado(1) = "Cambiado" por Separado(0) = "Cambiado"

Los Arrays o Matrices en Visual Basic, y en todos los lenguajes de programación, los índices de las matrices empiezan por 0, así que la primera posición de la matriz es 0.

Otra cosa es que acabo de ver que hay un error en mi código. No es nada, pero de todas formas todo es por las prisas :P

Private Sub Command1_Click()
    If UBound(Separado) > 2 Then    'Podemos poner también UBound(Separado) >= 1
        MsgBox UBound(Separado)
        Separado(1) = "Cambiado"     'El índice de la matriz es 1 para la 2ª línea
    End If


¡Un saludo!

SKL (orignal)

mmmmmmm

fijate si te sirve esto tambien


Dim i As Long
Dim sData() As String

sData = Split(Text1.Text, vbCrLf)

For i = 0 To UBound(sData)
    Debug.Print sData(i)
Next


lo que hace es dividir por cada vez que se apreto ENTER, si va a ser como el ejemplo esto te va a servir, pero si tenes un texto por ejemplo una historia, lo va a separar en Horaciones y no en lineas.

se entiende??

saludos