Hola. Tengo un problema con un archivo aleatorio, lo que necesito es extraer un registro previamente comparado de un archivo aleatorio, les muestro un ejemplo:
Contenido de archivo aleatorio:
"Nombre" "Edad" "Direccion" "Telefono"
"Nombre" "Edad" "Direccion" "Telefono"
"Nombre" "Edad" "Direccion" "Telefono"
"Nombre" "Edad" "Direccion" "Telefono"
.
.
.
Y así sucesivamente, ya realicé una comparación y sí encuentra el registro adecuado, pero no sé cómo extraerlo. Ya he pensado en usar Line Input, pero esto es inservible si el número de registros es indefinido. ¿Qué puedo hacer? ¿Me podrían mostrar un ejemplo?
Gracias.
Buenas
Sinceramente, no te entendi correctamente, si lo que intentas hacer es tratamiento con Bases de datos, simplemente busca en Google.com :), miles de manuales.
Si lo que exactamente queres hacer es Abrir tu archivo aleatorio y extraer todo su contenido y sus lineas, usa LOF(1), es simple:
Dim Contenido as string
Contenido = LOF(1)
Open archivo for input read as #1
Get,,Contenido
Close #1
Podes volcar el contenido en memoria, buscar tu registro y extraer una linea si queres de la cadena mencionada.
Y ahora, nose si eso es lo que queres, pero si mal no entiendo haces una comparacion de archivos para encontrar tu cadena, entonces, porque no pedis el numero de linea en donde se encuentra la solo extraes esa?
Si te explicas mejor y das datos talvez alguien ayude mejor.
Suerte
Yo tmpoco t e entendido pero creo q quieres leer cada linea y en cada linea habra una cierta cantidad de palabras
Citar"Nombre" "Edad" "Direccion" "Telefono"
"Nombre" "Edad" "Direccion" "Telefono"
"Nombre" "Edad" "Direccion" "Telefono"
"Nombre" "Edad" "Direccion" "Telefono"
Creo k lo k kieres esk si pones una edad o direccion lo q sea q t muestre toda la linea. Aqui t lo dejo pero tendras q modificar y ponerlo a tu gusto
Private Sub Command1_Click()
Dim linea As String
Open "C:\a.txt" For Input As #1 'abres el archivo pa leerlo
While Not EOF(1) 'desde aqui hasta el wend sino ha acabado
Line Input #1, linea 'lee la linea
separa = Split(linea, " ") 'esto crea un array de cada linea si los datos q as guardado estan separados por un espacio
icuantos = UBound(separa) ' aqui t dice en numero cuantos nombres ay dentro del split
For i = 0 To icuantos 'crea un bucle para q la i tome valores hasta el icauntos
If separa(i) = "Sh3K3L" Then 'aqui pondrias el otro miembro para la comparacion
For a = 0 To icuantos 'si entra en esta linea es q la comparacion es valida
Label1 = Label1 & separa(a) & " " 'en el label t pondra toda la linea
Next a 'en las siguientes lineas se salen del for y if
End If
Next i
Wend
close #1
End Sub
Otra cosa t recomiendo q pongas al escribir dentro de un texto o archivo lo q sea q utilizes el Print
Por lo que veo no me expliqué bien, pero no importa, los dos me dieron una idea de cómo solucionar mi problema, es por eso que aquí publico la solución
Private Sub Command1_Click()
Dim X As Integer, Fila As Integer
Dim NumArchivo As Long
Dim Arreglo(4, 0 To 4) As String, Archivo As String
Fila = 0
Archivo = "c:\1.txt"
NumArchivo = FreeFile()
Open Archivo For Output As #NumArchivo
Write #NumArchivo, "JUAN", "JESÚS", "JAVIER", "JORGE", "JEHÚ"
Write #NumArchivo, "WINDOWS", "LINUX", "MAC_OS", "ATHE_OS", "UNIX"
Close #NumArchivo
Open Archivo For Input As #NumArchivo
Do While Not EOF(NumArchivo)
Input #1, Arreglo(Fila, 0), Arreglo(Fila, 1), Arreglo(Fila, 2), _
Arreglo(Fila, 3), Arreglo(Fila, 4)
Fila = Fila + 1
Loop
Close #NumArchivo
For X = 0 To Fila - 1
If Arreglo(X, 1) = UCase(Text1.Text) Then
MsgBox Arreglo(X, 0) & " " & Arreglo(X, 1) & _
" " & Arreglo(X, 2) & " " & Arreglo(X, 3) & _
" " & Arreglo(X, 4), vbInformation, "Línea encontrada"
End If
Next X
End Sub
Cita de: seken_C4
Otra cosa t recomiendo q pongas al escribir dentro de un texto o archivo lo q sea q utilizes el Print
Si te refieres a la estructura del archivo, pues entonces eso no depende de mí, ya que yo tengo acceso a un archivo que no está en mí modificar, es por eso que publico el contenido de archivo de esa forma. Como sea, muchas gracias por tu consejo.
Me alegra ver que hay gente amable y dispuesta a ayudar en esta sección.