Problema con archivos aleatorios

Iniciado por pandemonio, 9 Mayo 2006, 02:38 AM

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

pandemonio

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.

<--v1c1ous-->

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


SheKeL_C$

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

pandemonio

#3
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.