Almacnar
Hola,
necesito almacenar datos un vector con varios campos a un archivo .txt utilizando
necesito almacenar datos un vector con varios campos a un archivo .txt utilizando
Explicate un poco mejor...
Que querés almacenar
Un vector, una matriz? que tipos de datos hay en tu estructura? ¿que son esos varios campos?
Saludos
Que querés almacenar
Un vector, una matriz? que tipos de datos hay en tu estructura? ¿que son esos varios campos?
Saludos
Es una estructura (Clima) de 20 posiciones
con varios campos (Temperatura, humedad...)
Y no consigo que se guarde en un txt lo he intentado con output y print.
Gracias
con varios campos (Temperatura, humedad...)
Y no consigo que se guarde en un txt lo he intentado con output y print.
Gracias
La estructura es la siguiente:
-----------------------------
Public Type Clima ..
Dim Temperatura as integer
Dim Humedad as integer
End Public
Dim ClimaPueblo as Clima
---------------------------------------
Ahora tengo un txt con datos almacenados de temperatura, humedad, precipitaciones... y quiero poder añadir nuevos datos ya que no tengo posiciones vacias.
y no consigo que me deje guardarlas.
-----------------------------
Public Type Clima ..
Dim Temperatura as integer
Dim Humedad as integer
End Public
Dim ClimaPueblo as Clima
---------------------------------------
Ahora tengo un txt con datos almacenados de temperatura, humedad, precipitaciones... y quiero poder añadir nuevos datos ya que no tengo posiciones vacias.
y no consigo que me deje guardarlas.
Ahora se entiende mejor
Fijate como queda la estructura
Public Type Clima.
Temperatura as integer
Humedad as integer
End Type
' ClimaPueblo tiene que ser un vector dinámico, para
' que pueda variar sus dimensiones
Public ClimaPueblo() as Clima
Ahora, dado que tenemos una estructura, se puede trabajar tanto con archivos de texto como con accesos directos
Sub CargarArchivo(Archivo as string)
Dim Nro as Integer
Dim Dato as Clima
dim CantReg as long
Dim i as Long
Nro = Freefile
Open Archivo For Random As #nro Len =Len(clima)
' Calcular la cantidad de registros
CantReg = Filelen(Archivo)/Len(clima)
'Dimensionar el vector
Redim ClimaPueblo(CantReg-1)
i=-1
Do While not EOF(nro)
i=i+1
Get #Nro,,Dato
ClimaPueblo(i) = Dato
Loop
Close Nro
End Sub
Ahora veamos como sobreescrivir el archivo con el vector
Sub EscribirArchivo(Archivo as string)
Dim Nro as Integer
Dim Dato as Clima
Dim i as Long
Nro = Freefile
Open Archivo For Random As #nro Len =Len(clima)
For i = 0 to Ubound(ClimaPueblo)
Put #Nro,,ClimaPueblo(i)
Next i
Close Nro
End Sub
Donde Archivo es la ruta completa del archivo a trabajar.
Lo que queda es, que cada vez que desees agregar un dato a vector, primero llamas a Redim con la cláusula Preserve, para que no vacÃe los datos ya ingresados o leidos
Dim IndiceNew as Long
IndiceNew=Ubound(ClimaPueblo)+1
Redim Preserve ClimaPueblo(IndiceNew)
ClimaPueblo(IndiceNew).Temperatura = <nuevo valor>
ClimaPueblo(IndiceNew).Humedad = <nuevo valor>
Espero que sirva
saludos
Fijate como queda la estructura
Public Type Clima.
Temperatura as integer
Humedad as integer
End Type
' ClimaPueblo tiene que ser un vector dinámico, para
' que pueda variar sus dimensiones
Public ClimaPueblo() as Clima
Ahora, dado que tenemos una estructura, se puede trabajar tanto con archivos de texto como con accesos directos
Sub CargarArchivo(Archivo as string)
Dim Nro as Integer
Dim Dato as Clima
dim CantReg as long
Dim i as Long
Nro = Freefile
Open Archivo For Random As #nro Len =Len(clima)
' Calcular la cantidad de registros
CantReg = Filelen(Archivo)/Len(clima)
'Dimensionar el vector
Redim ClimaPueblo(CantReg-1)
i=-1
Do While not EOF(nro)
i=i+1
Get #Nro,,Dato
ClimaPueblo(i) = Dato
Loop
Close Nro
End Sub
Ahora veamos como sobreescrivir el archivo con el vector
Sub EscribirArchivo(Archivo as string)
Dim Nro as Integer
Dim Dato as Clima
Dim i as Long
Nro = Freefile
Open Archivo For Random As #nro Len =Len(clima)
For i = 0 to Ubound(ClimaPueblo)
Put #Nro,,ClimaPueblo(i)
Next i
Close Nro
End Sub
Donde Archivo es la ruta completa del archivo a trabajar.
Lo que queda es, que cada vez que desees agregar un dato a vector, primero llamas a Redim con la cláusula Preserve, para que no vacÃe los datos ya ingresados o leidos
Dim IndiceNew as Long
IndiceNew=Ubound(ClimaPueblo)+1
Redim Preserve ClimaPueblo(IndiceNew)
ClimaPueblo(IndiceNew).Temperatura = <nuevo valor>
ClimaPueblo(IndiceNew).Humedad = <nuevo valor>
Espero que sirva
saludos
