Open, Close, Freefile, Write#, Input# #income #protection #policies

by ,

#freefile

#

Resumen:Entrega n 28-1 del curso Aprender a programar en Visual Basic desde cero.

Codificaci n aprenderaprogramar.com: CU00329A-1

OPERAR CON FICHEROS

Es frecuente necesitar guardar informaci n en ficheros o recuperar informaci n desde ficheros con Visual Basic. La forma de hacerlo en general es Abrir — Operar — Cerrar , pero la sintaxis concreta a utilizar depende de la versi n de Visual Basic que estemos empleando:

Para las versiones menos recientes de Visual Basic: describimos a continuaci n c mo debe procederse.

Nos vamos a centrar en describir de forma pr ctica como podemos operar con ficheros con el prop sito de generar programas que nos permitan ver aplicaciones algor tmicas interesantes. No vamos a explicar todas las posibles formas de operar con ficheros ni todas las instrucciones relacionadas.

OPEN, CLOSE, FREEFILE. WRITE# Y INPUT#. EJEMPLOS.

Para manipular informaci n de un fichero, por ejemplo guardar datos en l o leer datos desde l, lo primero que hemos de hacer es abrir el fichero. El proceso a seguir es:

Abrir el fichero — Manipular datos (extraer, guardar, modificar, etc.) — Cerrar el fichero (Open — Manipular datos — Close)

A su vez, cada vez que accedemos a un fichero usamos un n mero como identificador. Podemos considerar que el identificador es una l nea de tel fono o canal entre el ordenador y el fichero. As , para establecer una llamada (abrir un fichero) tenemos que buscar una l nea que est libre. El n mero de l neas es grande, pero no infinito. Por tanto, podemos abrir muchos archivos al mismo tiempo, pero no todos los que queramos.

La sintaxis que emplearemos ser la siguiente:

Open [ruta de acceso] For [tipo de acceso] As [n mero de archivo]

Ya tenemos definido c mo abrimos y cerramos la comunicaci n con un archivo. Ahora tenemos que ver c mo manipulamos los datos. Para ello nos valemos de las instrucciones Write# y Input#. Existen distintas variantes para el uso de estas instrucciones. Vamos a considerar nicamente el caso de escritura y extracci n de una variable por l nea. La sintaxis que emplearemos ser :

a) Para escribir en el fichero:

Write #[N mero de archivo], [Dato a escribir]

El dato a escribir puede ser un texto entrecomillado, un valor num rico o una variable num rica o tipo texto.

a) Para extraer datos del fichero:

Input #[N mero de archivo], [Nombre de variable]

El nombre de variable ha de corresponder a una variable tipo texto o tipo num rico que habremos declarado previamente. Es ideal saber qu tipo de dato contiene el fichero para hacer una extracci n usando una variable adecuada. Si no dispusi ramos de esta informaci n podr amos usar variables tipo Variant, pero no es lo m s deseable.

Consideremos un programa a modo de ejemplo:

Rem Curso Visual Basic aprenderaprogramar.com

Option Explicit
Dim Canal%, i%
Dim Encabezado As String
Dim Dato(3) As Integer
Dim Datoextraido(3) As Integer
Dim Textoextraido As String

Private Sub Form_Load()
Encabezado = Datos de pesos en kgs
Dato(1) = 322
Dato(2) = 112
Dato(3) = 567
Canal = FreeFile
Open C:\misdatos.dat For Output As Canal
Write #Canal, Datos de pesos en kgs
Write #Canal, Dato(1)
Write #Canal, Dato(2)
Write #Canal, Dato(3)
Close Canal

Canal = FreeFile
Open C:\misdatos.dat For Input As Canal
Input #Canal, Textoextraido
Input #Canal, Datoextraido(1)
Input #Canal, Datoextraido(2)
Input #Canal, Datoextraido(3)
Close Canal

Label1.Alignment = 2
Label1.FontBold = True
Label1 = vbCrLf Textoextraido vbCrLf vbCrLf
For i = 1 To 3
Label1 = Label1 Datoextraido(i) vbCrLf
Next i
End Sub

El c digo comienza con la declaraci n de las variables que van a intervenir en el programa. Se asignan valores a las variables Encabezado (tipo texto) y Dato(1), (2) y(3) (tipo Integer). El valor de Canal se establece a trav s de FreeFile, con lo que hay una asignaci n autom tica de l nea de comunicaci n . A continuaci n se abre el archivo C:\misdatos.dat (en caso de que no existiera previamente el archivo es creado) para escritura (Output). A trav s de Write# se escriben cuatro l neas y se cierra la comunicaci n.

Se vuelve a abrir comunicaci n para lectura de datos (Input), se asignan los datos a las variables Textoextraido y Datoextraido(1), (2) y (3) y se cierra la comunicaci n.

La informaci n extra da del archivo se muestra en pantalla, donde aparece:

Datos de pesos en kgs.

La escritura mediante Write# de valores tipo texto queda delimitada por un entrecomillado que es eliminado en el momento de la extracci n.

El tama o del archivo es de 40 bytes desglosados en:

23 bytes al texto de la primera l nea.

2 bytes al salto de l nea y retorno de carro de la primera l nea.

3 bytes a la segunda l nea.

2 bytes al salto de l nea y retorno de carro de la segunda l nea.

3 bytes a la tercera l nea.

2 bytes al salto de l nea y retorno de carro de la tercera l nea.

3 bytes a la cuarta l nea.

2 bytes al salto de l nea y retorno de carro de la cuarta l nea.

Se comprueba lo indicado en relaci n al acceso secuencial: a pesar de guardar variables tipo Integer, el espacio ocupado no es el correspondiente a este tipo de variables (2 bytes) sino el equivalente a que fueran un texto en el archivo (1 byte por car cter).

Existen numerosos t rminos para el manejo de ficheros que no vamos a abordar.

Algunos t rminos tienen distinto significado o efecto en funci n del tipo de acceso a fichero que se utilice o en funci n de la versi n de Visual Basic que se utilice.

La se al de Final de Archivo (EOF) nos resultar til para extraer datos desde un archivo hasta llegar al final del mismo (punto donde finalizan los datos) la estudiaremos en el apartado correspondiente a Herramientas de programaci n con Visual Basic .


Leave a Reply

Your email address will not be published. Required fields are marked *