Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Como pasar a la siguiente linea de un archivo plano (txt)

Estas en el tema de Como pasar a la siguiente linea de un archivo plano (txt) en el foro de Visual Basic clásico en Foros del Web. Buenas tardes, quisera saber si alguien podria ayudarme en mi duda. Tengo 4 textbox y un boton y tengo un archivo plano (txt) que se ...
  #1 (permalink)  
Antiguo 08/09/2008, 14:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
De acuerdo Como pasar a la siguiente linea de un archivo plano (txt)

Buenas tardes, quisera saber si alguien podria ayudarme en mi duda.
Tengo 4 textbox y un boton y tengo un archivo plano (txt) que se llama plano1.txt

ejemplo 1:750,ANTONIO MANUEL PEREZ,MARACAIBO 15 DE AGOSTO,2008
820.50,ANA MARIA FERRER,MARACAIBO 18 DE AGOSTO,2008
304,MARIELA BORQUEZ,MARACAIBO 24 DE AGOSTO,2008
500.30,CECILIA NAVA,MARACAIBO 27 DE AGOSTO,2008

Esta data esta separada por coma como se ve, lo cierto del caso es que a trave del split pude colocar en cada campo (textbox) cada palabra, es decir,

ejemplo 2: en text1:750 - en text2:ANTONIO MANUEL PEREZ - en text3: MARACAIBO 15 DE AGOSTO y en el text4:2008.

esto es porque cada una debe ir en su respectivo textbox; mi problema radica en que no se como hacer para que al momento de darle click al boton este me pase a la siguiente linea que searia: 820.50,ANA MARIA FERRER,MARACAIBO 18 DE AGOSTO,2008 y me ponga la informacion como en el ejmplo 2 y asi sucesivamente con todas las lineas, es decir, que mientras hayan lineas en mi archivo plano quiero que cuando haga click en el boton este me pase a la siguiente linea y a la siguiente linea y asi sucecivamente hasta que no haya mas informacion...

Gracias de ante mano y quien me pueda ayudar se lo agradeceria...
  #2 (permalink)  
Antiguo 08/09/2008, 14:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

Si estás abriendo el archivo usando Open "Archivo" For Input As #1, puedes usar Line Input para pasar a la siguiente línea y EOF(1) para saber si se ha llegado al final del archivo.

Aunque lo recomendable es que leas el archivo de una vez para que no quede en memoria mucho tiempo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 08/09/2008, 15:06
Avatar de moradazo  
Fecha de Ingreso: julio-2008
Ubicación: [email protected]
Mensajes: 355
Antigüedad: 15 años, 10 meses
Puntos: 2
Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

Este codigo me lo brindo Avellaneda:

Código PHP:
Private Sub funcion()
        
Dim ip As IntPtr Runtime.InteropServices.Marshal.AllocHGlobal(100000)
        
Dim sb As New System.Text.StringBuilder(100000)
        
Dim bt As Integer GetPrivateProfileSection("Nombre"ip100000"C:/tu_archivo.txt")
        Try
            For 
As Integer 0 To bt 1
                sb
.Append(Convert.ToChar(Runtime.InteropServices.Marshal.ReadByte(ipi)))
            
Next
            sb
.Remove(sb.Length 11)
            For 
Each line As String In sb.ToString().Split(Convert.ToChar(0))
                
Dim iPos As Integer InStr(line",") - 1
                text1
.Text Microsoft.VisualBasic.Right(lineLen(line) - iPos)
                
text2.Text Microsoft.VisualBasic.Right(lineLen(line) - iPos 1)
                
text3.Text Microsoft.VisualBasic.Right(lineLen(line) - iPos 2)
                
text4.Text Microsoft.VisualBasic.Right(lineLen(line) - iPos 3)
            
Next
        
Catch ex As System.Exception
            System
.Windows.Forms.MessageBox.Show(ex.Message)
        
Finally
            Runtime
.InteropServices.Marshal.FreeHGlobal(ip)
        
End Try
        
FileClose(0)
    
End Sub 
Tu archivo de texto debes tener un encabezado entre corchetes, en este caso asi [Nombre] como aparece arriba en el GetPrivateProfileSection que es el que leerá el archivo de texto.

Espero te sirva.
  #4 (permalink)  
Antiguo 09/09/2008, 09:35
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

Buen dia david, se me olvidaba el programa esta en visual basic 6.0 y no en php como me lo enviaste, por favor si puedes ayudarme al respecto, todo esta en vb 6.0.

Lo que tengo en el programa es esto:

Botón Siguiente:
============
Private Sub Command1_Click()
Dim iFile As Integer
Dim strFileBuff As String
Dim strAryLines() As String
Dim i, iCount As Long
Dim tArray() As String

iFile = FreeFile
' - Abre el archivo
Open "C:\Documents and Settings\fleal\Escritorio\leer_archivo\+\plano1.tx t" For Input As #iFile

' - Lee
strFileBuff = Input(LOF(iFile), #iFile)
i = InStr(iFile, ",")
iCount = 0
Do While i > 0
ReDim Preserve strAryLines(iCount)
strAryLines(iCount) = Left(iFile, i - 1)
iCount = iCount + 1
iFile = Mid(iFile, i + 1)

i = InStr(iFile, " ")
Loop
If iFile <> "0" Then
ReDim Preserve strAryLines(iCount)
strAryLines(iCount) = iFile
End If
strAryLines = Split(strFileBuff, ",")

' - cierra el archivo
Close #iFile

' - split
tArray = Split(strAryLines(0))
tArray = Split(strAryLines(0), ",")

Text2.Text = strAryLines(0)
Text3.Text = strAryLines(1)
Text4.Text = strAryLines(2)
Text5.Text = strAryLines(3)
End Sub

-------------------------------------------------------------------------

Botón Salir:
========
Private Sub Command2_Click()
End
End Sub
  #5 (permalink)  
Antiguo 09/09/2008, 10:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

En vez de volver a abrir el archivo con el botón siguiente, mejor lee el archivo al iniciar la ventana (Form_Load), divide por líneas (con Split) y almacena en un array, después con el botón siguiente, solo recorre ese Array.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 09/09/2008, 13:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

como lo puedo hacer, porque si lo hago como tu dices ya lo lee con el siguiente codigo:

'Ruta de acceso al archivo
dlgArchivo.InitDir = "C:\"

dlgArchivo.Filter = "Archivos de Texto (*.txt)|*.txt|Todos los Archivo (*.*)|*.*"
dlgArchivo.ShowOpen
If dlgArchivo.FileName <> Empty Then
txtArchivo.Text = dlgArchivo.FileTitle
Open dlgArchivo.FileName For Input As #iFile
Do While Not EOF(iFile)
Input #iFile, contenido
txtContenido.Text = txtContenido.Text & contenido
Loop

'Cierra el archivo
Close #iFile
Else
txtArchivo.Text = "NO SE ABRIO NINGUN ARCHIVO"
End If
End Sub

Este codigo lo que hace es buscar el archivo y lo coloca en el textbox, hasta alli se, pero no se como dividirla por lineas con split ni como almacenarla en un array para luego recorrerlo...me podrias ayudar en eso.....
  #7 (permalink)  
Antiguo 09/09/2008, 14:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

Un ejemplo con el array sería:
'En las declaraciones de la ventana'
Código PHP:
Private Archivo() As String 
Luego, al momento de leer las líneas del archivo:
Código PHP:
ReDim Archivo(0)
Do While 
Not EOF(iFile)
    
Input #iFile, contenido
    
ReDim Preserve Archivo(UBound(Archivo) + 1)
    
Archivo(UBound(Archivo)) = contenido
Loop 
Con eso ya tendremos en el array archivo todas las líneas, y luego solo habrá que recorrerla especificando el índice para obtener los datos de esa línea. Por ejemplo:
Código PHP:
MsgBox Archivo(2'Mostrará la segunda línea del archivo' 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 10/09/2008, 08:18
 
Fecha de Ingreso: septiembre-2008
Mensajes: 4
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

Buen dia David, ya hice lo que me dijiste pero no el recorrido me lo miestra como mensajes de alerta.
Te cuento, es un proyecto de la universidad y necesito es hacer una especie de registro de cheques; es decir, ya hice todo el proyecto y puedo meter la informacion manual y puedo imprimir cada cheque que vaya ingresando, pero la profesora dice ahora que le ingresemos un modulo continuo; es decir, que si tenemos un archivo plano (txt) como te dije anteriormente que el archivo al darle abrir el me abra y como va separado por coma entonces son 4 datos por lineas que son: monto (750), nombre (jose perez), fecha (maracaibo 02 de septiembre) y el año (2008), y que cuando le de al boton siguiente elm me vaya a la seguiente linea que contendra los nuevos 4 datos del txt y asi sucesivamente, que ella pueda ver todos los que estan en ese archivo plano al darle simplemente al boton siguiente, y que cuando le de al boton imprimir el sistema imprima toda esa lista asi separada por cheques; osea que me va a pedir la impresora que ingrese cheques cuando termine de imprimir uno y asi hacerlo de forma continua.
Espero me haya explicado bien...Ese es el modulo que me falta...
  #9 (permalink)  
Antiguo 10/09/2008, 08:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Como pasar a la siguiente linea de un archivo plano (txt)

Ya había entendido lo que querías hacer, y ya te puse el código necesario para hacerlo, ahora ya tienes en el array todas las líneas del archivo, solo necesitas recorrer ese array con los botones siguiente o atrás y con Split separar su contenido.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:40.