Toolkit II, Manual de Usuario | ||
---|---|---|
Anterior | Siguiente |
Todos los comandos y funciones OPEN y CLOSE evitan el problema que ocurre usando las facilidades estándar del QL cuando se abren más de 32768 ficheros en una sesión de trabajo.
Los comandos OPEN del QL estándar han sido modificados para que usen los directorios de omisión para datos. Se han añadido dos comandos que permiten la apertura de ficheros sobreescribiendo el antiguo en el caso de que exista, y la apertura de un directorio.
OPEN #canal,nombre abre un fichero
OPEN_IN #canal,nombre abre un fichero sólo para lectura
OPEN_NEW #canal,nombre abre un nuevo fichero
OPEN_OVER #canal,nombre abre un nuevo fichero, y lo sobrescribe si existe
OPEN_DIR #canal,nombre abre un directorio
La función FTEST determina el estado de un fichero o dispositivo. Abre un fichero sólo para lectura y lo cierra inmediatamente. Si el fichero existe devolverá los valores 0 o -9 (código de error "en uso"); si no existe, devolverá -7 (código de error "no encontrado"). Otras posibles respuestas son -11 ("nombre incorrecto"), -15 ("parámetro incorrecto"), -3 ("sin memoria") o -6 ("canal no abierto" por no haber sitio en la tabla de canales).
FTEST (nombre) verifica el estado del fichero
La función puede usarse para comprobar que un fichero no existe:
IF FTEST (file$) = -7: Print "Fichero ";file$;" existe"
Hay un grupo de funciones para la apertura de ficheros. Estas funciones difieren de los procedimientos OPEN en dos cosas. La primera es que si ocurre un error en el sistema de ficheros (por ejemplo, "no encontrado" o "ya existe"), estas funciones devolverán el número de error y el programa podrá continuar. La segunda diferencia es que estas funciones pueden ser utilizadas para encontrar un hueco en la tabla de canales; en este caso, si el proceso de apertura acaba positivamente, el número devuelto será el del canal.
FOPEN (#canal,nombre) abre un fichero para lectura/escritura
FOP_IN (#canal,nombre) abre un fichero sólo para lectura
FOP_NEW (#canal,nombre) abre un fichero nuevo
FOP_OVER (#canal,nombre) abre un fichero nuevo, y lo sobrescribe si ya existe
FOP_DIR (#canal,nombre) abre un directorio
Cuando se llama a estas funciones con dos parámetros, devuelven un valor de cero si son completadas correctamente, o el código de error negativo, en caso contrario.
Un fichero puede ser abierto sólo para lectura con una extensión opcional, usando el código siguiente:
ferr=FOP_IN(#3,nombre$&"_ASM") : REMark trata de abrir el fichero "_ASM"
IF ferr=-1:ferr=FOP_IN(#3,nombre$) : REMark en caso de error "no encontrado" trata de abrir fichero no "_ASM"
El parámetro #canal es opcional: si no se da, las funciones buscarán un canal libre en la tabla de canales, y si se llega a abrir el canal, su número será devuelto por la función. Observa que los números de error son siempre negativos y que los números de canal son siempre positivos.
En el ejemplo:
numcan = FOP_NEW(fred) : REMark abre fred
IF numcan<0 : REPORT numcan : STOP : REMark fracasó open
PRINT #numcan, "Este es el fichero Fred"
CLOSE #numcan
no hay necesidad de conocer el número real del canal.
El comando CLOSE admite varios parámetros. Además, si se le llama sin ningún parámetro, cerrará los canales número #3 y superiores. No da ningún error si el canal no está abierto.
CLOSE #canales cierra canales
Por ejemplo
CLOSE #3,#4,#6 cierra #3,#4 y #6
Anterior | Índice de Materias | Siguiente |
Control de tareas | Información de ficheros |