• Jueves 14 de Noviembre de 2024, 17:01

Autor Tema:  Manejo De Archivos  (Leído 2029 veces)

Fernando_P

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Manejo De Archivos
« en: Miércoles 11 de Febrero de 2004, 19:24 »
0
Hola a todos,
tengo un problema y deseo que alguien me pueda ayudar.

Resulta que debo trabajar con un archivo plano(txt), en el cual las columnas representan años y las filas son los dias de cada año, y se almacenan datos para cada dia, el formato es el siguiente:

               año1    año2    año3    ...    año n

dia1           23        25       105.3          200.25

...
...

dia 365      5.27     3          300              245


cada datos esta separado poor una tabulacion. lo que necesito es crear a partir de este archivo un vector que me tome los datos de cada año, obviamnete hay añops bisiestos por lo que algunos vectores tendran largo 366 y otros 365, necesito ir creando dinamicamente estos vectores, porque necesito trabajar con los datos por año, la cantidad de años tambien pude ser variable, es decir, puede haber atchivos con datos de 30 años, 10, 15, 25, etc. Como hago esto?

Cualquier ayuda me ayudaria, ya que hasta ahora no he logrado crear el vector.

desde ya muchas gracias.

Saludos a todos.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Manejo De Archivos
« Respuesta #1 en: Jueves 12 de Febrero de 2004, 09:03 »
0
Hola Fernando_P.

Hay una función que te puede ir que ni pintada, es Split.

Almacena los datos de cada registro en una variable string, y luego usa split para obtener cada campo (dices que están separados por tabulaciones)  como un elemento de una matriz de tipo variant, algo así:

Código: Text
  1.  
  2. Dim  intCanal As Boolean
  3. intCanal = FreeFile
  4. Open "C:\Ruta\Archivo.txt" For Input As #intCanal
  5. dim var1 AS variant, str1 As String
  6. Dim intAnho As integer, intDia as integer
  7. Do until EOF(intCanal)
  8.    Line Input #intCanal, str1
  9.    intDia = intDia + 1
  10.    var1 = Split(str1, Chr(9))
  11.    For intAnho = 0 To UBound(var1)
  12.         MsgBox "Día: " & intDia & vbcrlf _
  13.         & "Año: " & intAnho + 1 & vbcrlf _
  14.         & "Valor: " & var1(intAnho)
  15.    Next intAnho
  16. Loop
  17. Close #intCanal
  18.  
  19.  

Suerte.