Todas las rutinas aquí descritas, trabajan con nombres de archivos en ASCII o su variante ANSI sólo para los sistemas operativos Windows, en Linux se usan nombres de archivos en UTF8.
Estas rutinas nos permiten cambiar de una carpeta a otra, obtener la dirección de la carpeta actual en uso por el programa, crear una carpeta, remover o borrar una carpeta y verificar la existencia de una carpeta. SetCurrentDir, CreateDir y RemoveDir son funciones que aceptan un parámetro de tipo string que debe ser el nombre de la carpeta, estas devuelven un resultado de tipo boolean, devuelve true si la operación se realiza con éxito y false en caso contrario. RemoveDir no borrara una carpeta si esta contiene archivos o más carpetas en su interior. GetCurrentDir es otra función que no tiene parámetros y nos devuelve la dirección actual o en uso por el programa. CreateDir, no puede crear varias carpetas ingresando sólo la dirección, es decir si queremos crear la carpeta ABC y dentro de ella crear la carpeta documentos, primero se debe crear la carpeta ABC y después crear la carpeta documentos. SetCurrentDir, RemoveDir y CreateDir pueden usar rutas relativas.Las funciones SetCurrent, RemoveDir y CreateDir devuelven un valor booleano, verdadero si la operación fue un éxito y falso en caso contrario. Ejemplo:
Esta rutina nos permite devolver los atributos de un archivo, el valor devuelto por esta función es una variable de tipo longint, que con ayuda de las banderas y el operador And se puede verificar que atributo del archivo esta activado. Las banderas se definen con las siguientes constantes: La constante faReadOnly, nos permite verificar si el archivo es de solo lectura. La constante faHidden, nos permite verificar si el archivo está escondido. faSysfile, nos permite verificar si el archivo es un archivo del sistema, aunque en la actualidad su uso carece de significado, faDirectory, nos permite verificar si el archivo es una carpeta, y por último faArchive nos indica que es un archivo modificado y se pone a 1 cuando se modifica de algún modo.
Los atributos de un archivo sólo usan 8 bits y se distribuyen tal como se muestra en el siguiente gráfico:
Para comprobar si el archivo tiene uno de estos atributos encendidos se hace uso del operador and con el atributo obtenido y una de las constantes antes mencionadas, después se verifica si el resultado es cero, en caso sea diferente a cero nos indica que ese bit esta encendido. Ejemplo:
Esta rutina nos permite colocar los atributos de un archivo, esta rutina tiene dos parámetros el primero el nombre del archivo y el segundo parámetro es la unión con el operador or, de una las constantes faReadOnly, faHidden, faSysfile y faDirectory, según sea el caso. Esta función devuelve 0 si la operación se llevo con exito, caso contrario devuelve -1. Esta función sólo funciona en sistemas operativos Windows en Linux devolverá -1. Ejemplo:
Estas rutinas se usan en conjunto para realizar búsquedas de archivos en el sistema, estas rutinas trabajan con el uso del tipo de datos registro TSearchRec definido en la unidad sysutils, que contiene los siguientes campos:
- Time
De tipo Longint, se usa para almacenar la hora y fecha de modificación del archivo.
- Size
De tipo Int64, se usa para almacenar el tamaño en bytes del archivo.
- Attr
De tipo Longint, se usa para almacenar los atributos de un archivo, que se puede verificar con las banderas: faReadOnly, faHidden, faSysfile, faDirectory usadas con la función FileGetAttr.
- Name
De tipo String, El nombre del archivo, sin la ruta.
- ExcludeAttr
De tipo Longint (de uso reservado)
- FindHandle
De tipo Longword (de uso reservado)
- Mode
De tipo LongWord (sólo para Linux)
- PathOnly
De tipo AnsisString, (de uso reservado. Este campo no se usa, y se incluye sólo para compatibilidad con Kylix)
FindFirst, es la función que se encarga de iniciar una búsqueda de archivos, tiene 3 parámetros, el primero es la ruta o los caracteres comodines que se usarán en la búsqueda. El segundo parámetro son los atributos adicionales de búsqueda de los archivos, FindFirst siempre buscará cualquier archivo ordinario, es decir un archivo ordinario es un archivo que no tiene ningún atributo o es un archivo de sólo lectura (faReadOnly) o un archivo modificado (faArchive). Si colocamos 0 en el segundo parámetro buscará cualquier archivo ordinario, pero si colocamos faDirectory, buscará cualquier archivo ordinario y también carpetas. Pero si colocamos faReadOnly, buscará archivos de sólo lectura pero no excluirá de la búsqueda a los otros archivos ordinarios, es decir usar los atributos faReadOnly o faArchive carecen de sentido ya que estos son archivos ordinarios.
El último y tercer parámetro es un registro de tipo TSearchRec, que es devuelto por la función con información del primer archivo encontrado. La función FindFirst devuelve 0 si encontró algún archivo, caso contrario devuelve un valor distinto de cero. FindNext, es la función que se encarga de devolver en su único parámetro el siguiente archivo encontrado, de la búsqueda iniciada con FindFirst, este parámetro es de tipo TSearchRec, la función devuelve 0 si existe un siguiente archivo, caso contrario devuelve un valor distinto de cero. FindClose, es la función encargada de cerrar la búsqueda iniciada por FindFirst, esta función debe usarse siempre cada vez que se hace una búsqueda iniciada con FindFirst, y su único parámetro es un registro de tipo TSearchRec. En todo el proceso de búsqueda, las 3 funciones FindFirst, FindNext y FindClose deben usar la misma variable de tipo TSearchRec. Ejemplo:
Para verificar si un archivo encontrado tiene alguno de sus atributos, se debe usar el operador and, para saber si el bit de su atributo esta activado.
FileAge, es una función que nos devuelve la fecha y hora de la última modificación del archivo en un tipo de dato longint, su único parámetro es el nombre del archivo. La función FileDateToDateTime convierte el longint devuelto por FileAge en un double, para poder usarlo con FormatDateTime. Ejemplo:
Permite modificar la fecha y hora de la última modificación del archivo. La función tiene dos parámetros el primero puede ser el nombre de un archivo o un manejador de archivo, y el segundo parámetros es la nueva fecha y hora que se le quiere asignar a un archivo. El siguiente ejemplo permite sacar la copia de un archivo, manteniendo su fecha y hora de su última modificación:
Esta función hace lo contrario a FileDateToDateTime, convierte un double que representa la fecha y hora, a un longint que representa la fecha y hora, esto nos permite por ejemplo, modificar la fecha y hora de un archivo con la fecha y hora actual del sistema. Se debe recordar que la función Now devuelve un double con la representación de la fecha y hora actual del sistema. Ejemplo:
Esta función nos permite cambiar el nombre de un archivo, el primer parámetro es el nombre anterior y el segundo parámetro es el nuevo nombre. Ejemplo:
Esta función también se puede utilizar, aunque parezca extraño para mover un archivo, sólo basta con colocar la nueva ruta de destino con el nuevo nombre de archivo, es decir si queremos mover el archivo color.txt que se encuentra en afiches/paletas/ a un nuevo destino como, volantes/paletas, se debe hacer del siguiente modo:
como se puede observar no se cambia el nombre, sino las rutas de origen y destino del archivo.
Esta función nos permite borrar el nombre de un archivo, el único parámetro que tiene es el nombre del archivo a borrar. Ejemplo: