Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: SheKeL_C$ en 3 Abril 2010, 18:06 pm



Título: Leer linea de un archivo de texto
Publicado por: SheKeL_C$ en 3 Abril 2010, 18:06 pm
En un archivo de texto (txt) tengo

Código:
coche
moto
camion
avion

Lo que quiero es leer la linea que yo quiera de este modo

Código:
Open "C:\datos.txt" For Input As #1
    'me posiciono en la segunda o tercera o la que sea linea
    Line Input #1, linea
    MsgBox linea
Close #1

He probado con seek, pero el parametro que se le pasa seria el numero de caracteres y no el numero de linea.

Creo que hace tiempo pregunte lo mismo pero no encuentro el post


Título: Re: Leer linea de un archivo de texto
Publicado por: Hasseds en 3 Abril 2010, 20:08 pm
Hola, yo usaria un archivos de acceso aleatorio en tu caso, pero si nesecitas  hacerlo con archivos de texto te dejo un ejemplo, en caso que te sirva lo tenés que optimizar de acuerdo a tus necesidades.

Código:

Option Explicit

Private Sub Form_Load()
  MsgBox LeerLinea(1)
  MsgBox LeerLinea(4)
  MsgBox LeerLinea(5)
  MsgBox LeerLinea(45)
End Sub

Function LeerLinea(numeroLinea As Integer) As String

  If Dir("C:\datos.txt") <> "" Then
    Open "C:\datos.txt" For Input As #1
      Dim i As Integer
      For i = 1 To numeroLinea
        If Not EOF(1) Then
          Line Input #1, LeerLinea
        Else
          LeerLinea = "EOF"
        End If
      Next
    Close #1
  Else
    LeerLinea = "no hay archivo"
  End If

End Function





Título: Re: Leer linea de un archivo de texto
Publicado por: SheKeL_C$ en 3 Abril 2010, 20:47 pm
Hola, yo usaria un archivos de acceso aleatorio en tu caso, pero si nesecitas  hacerlo con archivos de texto te dejo un ejemplo, en caso que te sirva lo tenés que optimizar de acuerdo a tus necesidades.

Código:

Option Explicit

Private Sub Form_Load()
  MsgBox LeerLinea(1)
  MsgBox LeerLinea(4)
  MsgBox LeerLinea(5)
  MsgBox LeerLinea(45)
End Sub

Function LeerLinea(numeroLinea As Integer) As String

  If Dir("C:\datos.txt") <> "" Then
    Open "C:\datos.txt" For Input As #1
      Dim i As Integer
      For i = 1 To numeroLinea
        If Not EOF(1) Then
          Line Input #1, LeerLinea
        Else
          LeerLinea = "EOF"
        End If
      Next
    Close #1
  Else
    LeerLinea = "no hay archivo"
  End If

End Function





Gracias por tu respuesta.. pero yo buscaba si existia un comando parecido a seek para hacerlo. Igualmente gracias


Título: Re: Leer linea de un archivo de texto
Publicado por: BlackZeroX en 4 Abril 2010, 03:01 am

Código
  1.  
  2. Option Explicit
  3.  
  4. Sub main()
  5. Dim StrFileData         As String
  6.    GetLineFromFile "c:\liberar memoria ram.bas", 2, StrFileData
  7.    MsgBox StrFileData
  8.    GetLineFromFile "c:\liberar memoria ram.bas", 8, StrFileData
  9.    MsgBox StrFileData
  10.    GetLineFromFile "c:\liberar memoria ram.bas", 10, StrFileData
  11.    MsgBox StrFileData
  12. End Sub
  13.  
  14. Public Function GetLineFromFile(StrFile As String, NumberFile As Long, ByRef StrLine As String) As Long
  15. Dim i                   As Long
  16. Dim StrByte             As String * 1
  17. Dim ff                  As Integer
  18.    If Dir(StrFile, vbArchive) <> "" Then
  19.        ff = FreeFile
  20.        Open StrFile For Input As #ff
  21.            Do
  22.                i = i + 1
  23.                If i < NumberFile Then
  24.                    Line Input #ff, StrByte
  25.                Else
  26.                    Line Input #ff, StrLine
  27.                End If
  28.            Loop Until i = NumberFile Or EOF(ff) = True
  29.            GetLineFromFile = Len(StrLine)
  30.        Close #ff
  31.    End If
  32. End Function
  33.  
  34.  

Dulces Lunas!ˇ.


Título: Re: Leer linea de un archivo de texto
Publicado por: seba123neo en 4 Abril 2010, 16:20 pm
otra forma es hacer un Split() al contenido del archivo con vbNewLine y leer la posicion determinada del array....por ejemplo:

Código
  1. Private Function DevolverLinea(ByVal pArchivo As String, ByVal pLinea As Long) As String
  2.    Dim i As Integer
  3.    Dim vLinea As String
  4.  
  5.    i = FreeFile
  6.    Open pArchivo For Input As #i
  7.        vLinea = Input$(LOF(i), #i)
  8.    Close #i
  9.    DevolverLinea = Split(vLinea, vbNewLine)(pLinea)
  10. End Function
  11.  
  12. Private Sub Command1_Click()
  13.    MsgBox DevolverLinea("c:\hola.txt", 63)
  14. End Sub
  15.  

saludos.