Apertura y cierre de ficheros
Para poder leer o escribir en un fichero antes debe ser abierto con la sentencia Open, cuya forma
general es la siguiente:
Open filename For modo As # fileNo
donde:
filename es el nombre del fichero a abrir. Será una variable string o un nombre entre dobles
comillas (“ ”).
modo Para acceso secuencial existen tres posibilidades: Input para leer, Output para
escribir al comienzo de un fichero y Append para escribir al final de un fichero ya
existente. Si se intenta abrir en modo Input un fichero que no existe, se produce un
error. Si se abre para escritura en modo Output un fichero que no existe se crea, y si
ya existía se borra su contenido y se comienza a escribir desde el principio.
El modo
Append es similar al modo Output, pero respeta siempre el contenido previo del
fichero escribiendo a continuación de lo último que haya sido escrito anteriormente.
fileNo es un número entero (o una variable con un valor entero) que se asigna a cada fichero
que se abre. En todas las operaciones sucesivas de lectura y/o escritura se hará
referencia a este fichero por medio de este número. No puede haber dos ficheros
abiertos con el mismo número. Visual Basic dispone de una función llamada
FreeFile que devuelve un número no ocupado por ningún fichero.
A continuación puede verse un ejemplo de fichero abierto para lectura:
Open "C:\usuarios\PRUEBA1.txt" For Input as #1
Después de terminar de leer o escribir en un fichero hay que cerrarlo. Para ello, se utilizara el
comando Close, que tiene la siguiente forma:
Close # fileNo
donde el fileNo es el número que se la había asignado al abrirlo con la instrucción Open.
7.6.2 Lectura y escritura de datos
7.6.2.1 Sentencia Input
Existen varias formas de leer en un fichero de acceso secuencial. Por ejemplo, para leer el valor de
una o más variables se utiliza la sentencia Input:
Input # fileNo, varName1, varName2, varName3, ...
donde el fileNo es el número asignado al archivo al abrirlo y varName1, varName2, ... son los
nombres de las variables donde se guardarán los valores leídos en el fichero. Debe haber una
correspondencia entre el orden y los tipos de las variables en la lista, con los datos almacenados en
el fichero. No se pueden leer directamente vectores, matrices o estructuras. Si los datos del disco
han de ser escritos por el propio programa, conviene utilizar la sentencia write (mejor que Print)
para garantizar que los valores están convenientemente separados. La sentencia Write se verá
posteriormente.
ESIISS: Aprenda Visual Basic 6.0 como si estuviera en Primero página 94
7.6.2.2 Función Line Input y función Input
La función Line Input # lee una línea completa del archivo y devuelve su contenido como valor de
retorno.
Su forma general es:
varString = Line Input #fileNo
Conviene recordar que en los ficheros de texto se suele utilizar el carácter return (o Intro)
para delimitar las distintas líneas. Este es el carácter ASCII nº 13, que por no ser un carácter
imprimible se representa en Visual Basic 6.0 como chr(13). En muchas ocasiones (como herencia
del MS-DOS) se utiliza como delimitador de líneas una combinación de los caracteres return y
linefeed, representada en Visual Basic 6.0 como chr(13)+chr(10). En la cadena de caracteres que
devuelve Line no se incluye el carácter de terminación de la línea.
Para leer todas las líneas de un fichero se utiliza un bucle for o while. Visual Basic 6.0
dispone de la función EOF (End of File) que devuelve True cuando se ha llegado al final del
fichero. Véase el siguiente ejemplo:
Do While Not EOF(fileNo)
miLinea = Line Input #fileNo
...
Loop
También se puede utilizar la función Input, que tiene la siguiente forma general:
varString = Input(nchars, #fileNo)
donde nchars es el número de caracteres que se quieren leer y varString es la variable donde se
almacenan los caracteres leídos por la función. Esta función lee y devuelve todos los caracteres que
encuentra, incluidos los intro y linefeed. Para ayudar a utilizar esta función existe la función LOF
(fileNo), que devuelve el nº total de caracteres del fichero. Por ejemplo, para leer todo el contenido
de un fichero y escribirlo en una caja de texto se puede utilizar:
txtCaja.text = Input(LOF(fileNo), #fileNo)
7.6.2.3 Función Print #
Para escribir el valor de unas ciertas variables en un fichero previamente abierto en modo Output o
Append se utiliza la instrucción Print #, que tiene la siguiente forma:
Print #fileNo, var1, var2, var2, ...
donde var1, var2,... pueden ser variables, expresiones que dan un resultado numérico o
alfanumérico, o cadenas de caracteres entre dobles comillas, tales como “El valor de x es...”.
Considérese el siguiente ejemplo:
Print #1, "El valor de la variable I es: ", I
donde I es una variable con un cierto valor que se escribe a continuación de la cadena. Las reglas
para determinar el formato de la función Print # son las mismas que las del método Print visto
previamente.
No hay comentarios:
Publicar un comentario