Hola PoNcHo!!, esto es una pequeña parte de lo que a manejo de archivos se refiere, esperemos que te pueda servir, sino entiendes algo vuelve a preguntar...
El Basic maneja tres tipos de archivos: secuenciales, aleatorios y binarios.
Cada uno tiene una serie de características en la forma de acceder a los datos.
El más básico y también el más empleado, es el secuencial; “Me encargare de explicarte este tipo de ficheros, los otros os los dejo de tarea.”
Con este tipo de fichero, los datos se almacenan y recuperan de forma secuencial, es decir: un dato después de otro...
El inconveniente que tiene esta forma de almacenar los datos, es que para recuperar lo que esté en la décima posición, tenemos que leer los nueve anteriores. (Por eso el nombre de secuencial)…
Necesitarais funciones para poder acceder a la información de los ficheros.
La primera función a usar será:
Freefile: Esta función devuelve un número entero, el cual se almacenará en una variable y así podremos usarlo para el manejo de los datos almacenados.
Se usa el freefile para encontrar un número de canal libre y así evitar la posibilidad de usar una línea que este en uso.
Ejemplo:
NumFic = FreefileUna vez que conozcamos un canal por el que poder acceder, tendremos que abrirlo:
Open "Prueba.txt" For Output As NumFicCon esta línea, abrimos el fichero Prueba.txt de forma secuencial para poder escribir en él.
Una vez que tenemos una "via" de comunicación, podremos escribir información usando la instrucción Print... (Un poco maquilada)
Print #NumFic, "Lo que sea"#NumFic es el número de fichero (o canal) por el que accedemos al fichero abierto y después de ese número, usamos una coma y a continuación lo que queremos guardar en el fichero, podes usar cadena de caracteres entre comillas (“”), una variable o hasta una constante.
Cuando hayamos acabado de guardar cosas, tendremos que cerrar el fichero que hemos abierto, para poder liberar ese canal abierto y así poder usarlo en otra ocasión, esto se consigue con el comando Close:
Ejemplo:
Close NumFicEs importante esto de cerrar el fichero abierto, ya que en ese momento es cuando el Basic guarda la información que aún tiene "temporalmente" almacenada en una memoria intermedia (buffer) que usa para que el acceso a datos sea, al menos en teoría, más rápido.
Ahora vamos a ver cómo se usa al completo la orden OPEN y sus posibilidades de uso.
Open RutaAcceso [For Modo] [Access acceso] [tipo de bloqueo] As [ # ] Númerofichero [Len=longitudregistro]Lo que está entre corchetes son parámetros opcionales.
Fíjate en el detalle que FOR Modo está entre corchetes, esto significa que si no se especifica el modo, el Visual Basic entiende que quieres acceder de forma aleatoria.
RutaAcceso: es el path (ruta del archivo) completo, o a medias, de dónde queremos que se almacene el fichero o el lugar en el que está almacenado.
Por ejemplo: C:\Datos\Un directorio\Prueba.txt
o simplemente Prueba.txt (esto le indicará que estará en el directorio actual)
Modo: existen 5 modos de acceder a los ficheros
•
Output, para ficheros de salida, es decir para guardar los datos.
Si el fichero existe, lo borrará (sobrescribirá) y si no existe, lo creará.
•
Input, para leer los datos de un fichero ya existente.
•
Append, como el Output, pero añadiendo la información al final del fichero, si este ya existe (sin tocar el contenido de los mismos).
•
Random, para acceso aleatorio.
•
Binary, para acceso binario.
As NúmeroFichero: aquí se indica el número de fichero (canal) por el que accederemos a la información. El signo de número (#) es opcional. Y NúmeroFichero, puede ser una variable o una constante.
Vamos a dejar tanta teoría y viajemos a la práctica:
‘---------------------------------------------------------------------------------------------------------
Option Explicit
Private Sub CmdCrearFichero_Click() 'CommandButton
'Empezamos Declarando variables
Dim NombreUsuario As String, Cadena As String
Dim EdadUsuario As Integer, NumFic As Integer
NombreUsuario = "Yohanna Crespo"
EdadUsuario = 20
Cadena = NombreUsuario & "-" & EdadUsuario
'Pude haber guardado los valores directamente en la variable cadena _
ahorrándome espacio en memoria y código, pero la idea es mostrarte otras opciones.
NumFic = FreeFile 'Buscamos un canal libre.
'Abrimos el archivo para crearlo o grabar en él (usando Append en este caso)
Open "C:\Prueba.txt" For Append As NumFic
Print #NumFic, Cadena 'Guardamos el valor de Cadena en el fichero.
Close NumFic 'Cerramos el fichero y liberamos el canal.
'Simplemente guardamos en el archivo 'prueba.txt' ubicado en c, _
el nombre y edad del usuario.
End Sub
Private Sub CmdAbrirFichero_Click() 'CommandButton
'Empezamos Declarando variables
Dim Cadena As String, CanalLibre As Integer
CanalLibre = FreeFile 'Buscamos un canal libre
'Abrimos el archivo para lectura "Input"
Open "C:\Prueba.txt" For Input As CanalLibre
List1.Clear 'Limpiamos el ListBox
While Not EOF(CanalLibre) 'Mientras el archivo no llegue al final…
Input #CanalLibre, Cadena
List1.AddItem Cadena
Wend
Close CanalLibre
'Simplemente abrimos el archivo y pasamos su contenido a un ListBox para mostrarlo
'Si intentáis abrir un archivo inexistente, te mostrara un error.
End Sub
‘---------------------------------------------------------------------------------------------------------
EOF (númeroarchivo): Devuelve un tipo Integer que contiene un valor tipo Boolean de True al llegar al final del archivo. (Simplemente indica cuando el archivo llega al final).
La teoría fue extraída del Curso Básico de Programación en Visual Basic del guille y la MSDN.
Te recomiendo que copies y pegues este código en un formulario y luego lo analices desde allí, así podras entenderlo mejor.
Aunque falta mucha tela por cortar en esto de los archivos, hay os dejo esto para que empezáis a trabajar con ficheros. ¿Difícil? …