6. Archivos de texto
Un fichero de texto es un fichero que contiene líneas de texto. Veamos la creación y el uso de este tipo de archivos con algunos ejemplos.
6.1. Creación y utilización
Programa |
![]() |
Resultados |
Comentarios
- la línea 7 crea un objeto archivo de tipo "Scripting.FileSystemObject"por la función CreateObject("Scripting.FileSystemObject"). Un objeto de este tipo permite acceder a cualquier archivo del sistema, no sólo a archivos de texto.
- la línea 9 crea un "TextStream". La creación de este objeto está asociada a la creación del fichero testfile.txt. Este archivo no se designa con un nombre absoluto como c:\dir1\dir2\....\testfile.txt sino por un sustantivo relativo testfile.txt. A continuación, se creará en el directorio desde el que se emitirá la orden para ejecutar el archivo.
- el sistema de archivos del sistema windows no conoce conceptos como archivos de texto o archivos que no son de texto. Sólo conoce los archivos. Por lo tanto, depende del que utiliza este archivo para saber si lo tratará como un archivo de texto o no.
- La línea 9 crea un objeto, de ahí el comando configure utilizado para la asignación. La creación de un objeto de archivo de texto implica la creación de 2 objetos:
- crear un objeto Scripting.FileSystemObject (línea 7)
- creando un "TextStream" (archivo de texto) utilizando el OpenTextFile el objeto Scripting.FileSystemObject que tiene varios parámetros:
- el nombre del fichero que se va a gestionar (obligatorio)
- cómo se utiliza el archivo. Se trata de un número entero con 3 valores posibles:
- 1: utilizando el archivo de lectura
- 2: utilización del fichero de escritura. Si no existe ya y si el 3er parámetro está presente y tiene el valor true, se crea, en caso contrario no. Si ya existe, se sobrescribe.
- 8: utilizar el fichero además, c.a.d. escribir hasta el final del fichero. Si el fichero no existe ya y si el 3er parámetro está presente y tiene el valor true, se crea, en caso contrario no.
- la línea 11 escribe una línea de texto utilizando la función WriteLine del objeto TextStream creado.
- la línea 13 "cierra" el archivo. Ya no se podrá escribir ni leer en él.
- la línea 16 crea un nuevo objeto "TextStream" Para utilizar el mismo archivo que antes, pero esta vez en modo "añadir". Las líneas que se escriban se escribirán detrás de las líneas existentes.
- la línea 18 escribe dos nuevas líneas, teniendo en cuenta que la constante vbCRLF es el marcador de fin de línea para archivos de texto.
- la línea 20 vuelve a cerrar el archivo
- la línea 23 lo reabre en modo "lectura": vamos a leer el contenido del fichero.
- La línea 27 lee una línea de texto utilizando la función ReadLine el objeto TextStream. Cuando el fichero se acaba de "abrir", se sitúa en la primera línea de texto del fichero. Cuando ésta ha sido leída por el ReadLinete posicionas en la segunda línea. Por tanto, la Línea de lectura no sólo lee la línea actual, sino que "avanza" automáticamente a la línea siguiente.
- Para alinear todas las líneas de texto, la tecla ReadLine debe aplicarse repetidamente en un bucle. Este bucle (línea 26) termina cuando el atributo AtEndOfStream el objeto TextStream tiene el valor true. Esto significa que no hay más líneas que leer en el archivo.
6.2. Casos de error
Hay dos casos frecuentes de error:
- apertura de lectura de un fichero que no existe
- escribir la apertura o adición de un archivo que no existe, con el tercer parámetro establecido en false en la llamada a la función OpenTextFile.
El siguiente programa muestra cómo detectar estos errores:
6.3. La aplicación IMPOTS con un fichero de texto
Volvemos a la aplicación de cálculo de impuestos, suponiendo que los datos necesarios para calcular el impuesto están en un fichero de texto llamado data.txt :
12620 13190 15640 24740 31810 39970 48360 55790 92970 127860 151250 172040 195000 0
0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4 0,45 0,5 0,55 0,6 0,65
0 631 1290,5 2072,5 3309,5 4900 6898,5 9316,5 12106 16754,5 23147,5 30710 39312 49062
Las tres líneas contienen respectivamente los datos de las tablas de límites de la aplicación, coeffR y coeffN. Gracias a la modularización de nuestra aplicación, los cambios se realizan esencialmente en la línea getData encargado de construir las tres mesas. El nuevo programa es el siguiente:
Programa |
|
Comentarios :
- en el archivo de texto data.txten este caso, los valores pueden estar separados por uno o varios espacios, por lo que no era posible utilizar la función split para recuperar los valores de la línea. Tuvimos que utilizar una expresión regular
- la función getData devuelve, además de las tres matrices límite, coeffR, coeffN, un resultado que indica si se ha producido o no un error. Este resultado es una matriz variante de dos elementos. El primer elemento es un código de error (0 si no ha habido error), el segundo el mensaje de error si ha habido error.
- la función getData no comprueba la validez de los valores encontrados en el archivo data.txt. En una situación real, debería hacerlo.
