Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: pandemonio en 9 Mayo 2006, 02:38 am



Título: Problema con archivos aleatorios
Publicado por: pandemonio en 9 Mayo 2006, 02:38 am
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.


Título: Re: Problema con archivos aleatorios
Publicado por: <--v1c1ous--> en 10 Mayo 2006, 04:55 am
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


Título: Re: Problema con archivos aleatorios
Publicado por: SheKeL_C$ en 10 Mayo 2006, 11:30 am
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

Código:
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


Título: Re: Problema con archivos aleatorios
Publicado por: pandemonio en 10 Mayo 2006, 19:09 pm
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

Código:

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.