Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: skapunky en 16 Octubre 2008, 12:35 pm



Título: Problema al leer linea archivo txt [Solucionado]
Publicado por: skapunky en 16 Octubre 2008, 12:35 pm
Buenas, haber estoy que voy a cojer el ordenador y lo voy a tirar por la ventana. He buscado por google y no he encontrado algo efectivo.

El caso esque en una variable tipo string, quiero almazenar solamente la segunda línea de un archivo txt. El problema esque si este archivo tiene mas de 2 lineas sale el error de "La entrada de datos a sobrepasado el final del archivo".

Para ello he declarado 3 variables para almazenar almenos las 3 primeras lineas, pero de esta manera sale también un error ya que si el txt solo tiene dos lineas sobra una variable y da error.

Para leer he utilizado lo siguiente:

Código
  1. dim linea1,linea2 as string
  2. Open Archivo For Input As #1
  3.  
  4. Do While Not EOF(1)
  5. Line Input #1, linea1
  6. Line Input #1, linea2
  7. Loop
  8. Close #1

lo que habia pensado, es hacer una funcion que lea el numero de lineas y luego con una matriz declarar el numero de variables lineaX segun las lineas totales...Alguien tiene alguna idea o solución mas práctica ?


Título: Re: Problema al leer linea archivo txt
Publicado por: skapunky en 16 Octubre 2008, 13:28 pm
Haber, ya lo he resuelto despues de lagrimas,sangre y sudor.

He volcado el contenido del txt entero en un listbox.

Y he hecho que:

linea2 = List1.List(1)

Así guardo la segunda línea directamente en linea2.

Saludos !!!


Título: Re: Problema al leer linea archivo txt [Solucionado]
Publicado por: cobein en 16 Octubre 2008, 13:59 pm
Otra manera de hacerlo, en realidad hay muchas, podrias hacer lo mismo que en tu primer ejemplo y salir del loop con un contador que se incrementa en cada vuelta.

Código:
Private Sub Form_Load()
    Dim sData As String
   
    Open "c:\test.txt" For Binary Access Read As #1
    sData = Space(LOF(1))
    Get #1, , sData
    sData = Split(sData, vbCrLf)(1)
    Close #1
   
    Debug.Print sData
   
End Sub