sábado, 23 de mayo de 2015

LECTURA Y ESCRITURA EN FICHEROS SECUENCIALES

 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