versión 11 (Modificado)
Introducción
Todos los documentos y aplicaciones que usted utiliza en su ordenador están almacenados en archivos en el o los discos duros conectados o montados en su ordenador, o en discos externos u otros dispositivos de almacenamiento. En 4D, utilizamos los términos archivo o documento para referirnos a estos documentos y aplicaciones. Sin embargo, la mayoría de los comandos en este tema utilizan el término "documento" porque generalmente los utilizará para acceder a los documentos (en lugar de aplicación o archivos sistema) en disco.
Un disco duro puede ser formateado de manera que tenga una o varias particiones, cada una de ellas llamada un volumen. No importa si dos volúmenes están físicamente presentes en el mismo disco duro; al nivel de 4D, generalmente estos volúmenes se consideran entidades separadas y equivalentes.
Un volumen puede estar ubicado en un disco duro físicamente conectado a su ordenador o montado en una red por medio de un protocolo de distribución de archivos tal como NetBEUI (Windows) o AFP (Macintosh). Cualquiera que sea el caso, a nivel de 4D, estos volúmenes son considerados del mismo modo cuando utiliza los comandos del tema Documentos del sistema (a menos que lo decida de otro modo y utilice plug-ins para extender las capacidades de su aplicación en este dominio).
Cada volumen tiene un nombre de volumen. En Windows, los volúmenes están designados por una letra seguida por dos puntos. Generalmente A: y B: se utilizan para designar los lectores de discos y C: designa el volumen que usted utiliza para lanzar su sistema (a menos que usted configure su PC de otra forma). Luego las letras D: a la Z: se utilizan para volúmenes adicionales conectados o montados en su PC (lectores DVD, otros lectores, lectores de red, etc.). En Macintosh, los volúmenes tienen nombres comunes; estos son los nombres que usted ve en el escritorio al nivel del Finder.
Generalmente, usted clasifica sus documentos en carpetas, que pueden contener otras carpetas. No es buena idea acumular cientos o miles de archivos en el mismo nivel de un volumen; es desordenado y vuelve lento su sistema. En Windows, una carpeta todavía es llamada un directorio. Las carpetas siempre se han llamado de esta manera en Macintosh.
Para identificar un documento de manera única, necesita saber el nombre del volumen y el/los nombre(s) de la(s) carpeta(s) donde el documento está ubicado como también el nombre del documento mismo. Si concatena todos estos nombres, usted obtiene la ruta de acceso al documento. Dentro de esta ruta de acceso, los nombres de las carpetas están separados por un carácter especial llamado símbolo separador. En Windows, este carácter es la barra oblicua inversa (\); en Macintosh son los dos puntos (:).
Veamos un ejemplo. Usted tiene un documento Importante ubicado en la carpeta Memos, que está ubicada en la carpeta Documentos, que está ubicada en la carpeta Trabajo actual.
On Windows, if the whole thing is located on the C: drive (volume), the pathname of the document is:
C:\Trabajo actual\Documentos\Memos\Importante.TXT
Nota: Igualmente el carácter \ es utilizado por el editor de métodos de 4D para designar las secuencias de escape. Para evitar todo problema de interpretación, el editor transforma automáticamente las rutas de acceso del tipo C:\Disk en C:\\Disk. Para mayor información, consulte el párrafo "Especificación de nombres y rutas de acceso de documentos.".
En Macintosh, si todo el conjunto está ubicado en el disco (volumen) Interno, la ruta de acceso del documento es:
Interno:Trabajo actual:Documentos:Memos:Importante
En Windows, el nombre del documento tiene el sufijo .TXT; veremos porqué en la siguiente sección.
Sin importar la plataforma, la ruta completa de un documento puede expresarse de esta manera:
VolNombre DirSep { DirNombre DirSep { DirNombre DirSep { ... } } } DocNombre
Todos los documentos (archivos) ubicados en los volúmenes tienen varias características, llamadas generalmente atributos o propiedades: por ejemplo el nombre del documento mismo, el tipo y el creador.
Tipo de documento y Creador
En Windows, un documento tiene un tipo. En Macintosh, un documento igualmente tiene un tipo y puede tener un creador. El tipo de un documento generalmente indica que es el documento y qué contiene. Por ejemplo, un documento de tipo texto contiene texto (sin estilo).
El tipo de un documento está determinado por el sufijo (llamado archivo de extensión) adjunto al nombre del documento. Por ejemplo, .TXT o .TEXT es la extensión de archivo para documentos de tipo texto. Este principio es el mismo bajo Mac OS X, sin embargo por razones de compatibilidad con versiones anteriores del sistema, el tipo de un documento está determinado por la propiedad tipo de archivo, si ha sido especificada. Esta propiedad es una firma de 4 caracteres (no mostrada al nivel del Finder). Por ejemplo, el tipo de archivo de un documento de tipo texto es "TEXT".
Adicionalmente, un documento puede tener un creador, el cual designa la aplicación que creó el documento. Este concepto no existe en Windows. El creador de un documento está determinado por la propiedad creador del archivo. Si un documento tiene ambas propiedades tipo y creador, Mac OS las tendrá en cuenta sin importar la extensión del documento.
DocRef: número de referencia del documento
Un documento está abierto en modo lectura/escritura, abierto en modo sólo lectura o cerrado. Utilizando los comandos integrados de 4D, un documento puede abrirse en modo lectura/escritura por sólo un proceso a la vez. Un proceso puede abrir varios documentos, varios procesos pueden abrir múltiples documentos, usted puede abrir el mismo documento en modo sólo lectura tantas veces como sea necesario, pero no puede abrir dos veces simultáneamente el mismo documento en modo lectura/escritura.
Usted abre un documento con los comandos Open document, Create document y Append document. Los comandos Create document y Append document abren automáticamente los documentos en modo lectura/escritura. Sólo el comando Open document le permite elegir el modo de apertura. Una vez abierto un documento en lectura/escritura, usted puede leer y escribir caracteres en el documento (ver los comandos RECEIVE PACKET y SEND PACKET). Cuando termina con un documento, generalmente se cierra con el comando CLOSE DOCUMENT.
Se hace referencia a todos los documentos abiertos utilizando la expresión DocRef devuelta por los comandos Open document, Create document y Append document. DocRef identifica de manera única un documento abierto. Es una expresión de tipo Hora. Todos los comandos que funcionan con documentos abiertos esperan DocRef como parámetro. Si pasa un DocRef incorrecto a uno de estos comandos, se genera un error del administrador de archivos.
Gestión de errores E/S
Cuando usted accede a documentos (apertura, cierre, eliminación, cambio de nombre, copia), cuando cambia las propiedades de un documento o cuando lee y escribe caracteres en un documento, E/S pueden ocurrir errores. Un documento puede no encontrarse; puede estar bloqueado; puede ya estar abierto en modo escritura. Puede reparar estos errores con un método de gestión de errores instalado por el comando ON ERR CALL. La mayoría de los errores que pueden ocurrir mientras se utilizan documentos del sistema se describen en la sección OS File Manager Errors.
La variable sistema Document
Los comandos Open document, Create document, Append document y Select document permiten acceder a un documento utilizando las cajas de diálogo estándar de abrir o cerrar archivos. Cuando accede a un documento por medio de un diálogo estándar, 4D devuelve la ruta completa del documento en la variable sistema Document. Esta variable sistema tiene que distinguirse del parámetro document que aparece en la lista de parámetros de los comandos.
Especificación de nombres y rutas de acceso a los documentos
La mayoría de las rutinas de esta sección esperan un nombre o ruta de acceso al documento (excepto cuando se indica de otra forma). Si pasa un nombre, el comando busca el documento dentro de la carpeta de la base. Si pasa una ruta de acceso, debe ser válida.
Si pasa un nombre o ruta de acceso incorrecto, el comando genera un error del administrador de archivos que puede interceptar utilizando un método ON ERR CALL.
Entrada de rutas de acceso Windows y secuencias de escape
El editor de métodos de 4D permite utilizar secuencias de escape. Una secuencia de escape es un conjunto de caracteres que se utilizan para remplazar un carácter "especial". Le secuencia comienza con el carácter barra oblicua inversa \, seguido por un caracter. Por ejemplo, \t es la secuencia de escape para el carácter Tab.
El carácter \ también se utiliza como separador de rutas de acceso en Windows. Por lo general, 4D interpretará correctamente las rutas de acceso Windows que se introducen en el editor de métodos reemplazando automáticamente las barras simples \ con barras dobles \\. Por ejemplo, C:\Carpeta se convertirá en C:\\Carpeta.
Sin embargo, si escribe C:\MisDocumentos\Nuevo, 4D mostrará C:\\MisDocumentos\Nuevo. En este caso, el segundo \ es interpretado de manera incorrecta como \N (una secuencia de escape existente). Por lo tanto debe introducir una barra doble \\ cuando quiera insertar una barra oblicua inversa delante de un carácter que se utiliza en una de las secuencias de escape reconocida por 4D.
Las siguientes son las secuencias de escape reconocidas por 4D:
Secuencia de escape | Caracter reemplazado |
\n | LF (Nueva línea) |
\t | HT (Tabulación) |
\r | CR (Retorno de carro) |
\\ | \ (Barra oblicua inversa) |
\" | " (Comillas) |
Métodos de proyecto útiles para la gestión de los documentos en disco
Detectar sobre cuál plataforma trabaja
Aunque 4D ofrece comandos, tal como MAP FILE TYPES, para eliminar las modificaciones de código asociadas a las particularidades de las plataformas, una vez comience a trabajar a un nivel más bajo manipulando los documentos en disco (tal como la obtención de rutas de acceso por programación), debe saber si está trabajando bajo una plataforma Macintosh o Windows
El método de proyecto En Windows a continuación permite conocer si su base se está corriendo en Windows:
` Método de proyecto En windows ` En windows -> Booleano ` En windows -> True si la base está bajo Windows C_BOOLEAN($0) C_LONGINT($vlPlataforma;$vlSistema;$vlEquipo) PLATFORM PROPERTIES($vlPlataforma;$vlSistema;$vlEquipo) $0:=($vlPlataforma=Windows)
Utilizar el símbolo separador de directorios correcto
En Windows, un nivel de directorio se simboliza con una barra oblicua inversa (\). En Macintosh, un nivel de carpeta se simboliza con dos puntos (:). Dependiendo de la plataforma en la cual se corre la base, el método de proyecto
Símbolo separadordevuelve el código del símbolo (caracter) separador de directorios correcto.
` Método de proyecto Símbolo separador ` Símbolo separador -> Entero ` Símbolo separador -> Código de "\" (Windows) o ":" (Mac OS) C_INTEGER($0) If (On Windows ) $0:=Character code("\\") Else $0:=Character code(":") End if
Extraer el nombre del archivo de una ruta de acceso completa
Una vez haya obtenido el nombre completo (la ruta de acceso + nombre del archivo) de un documento, podría necesitar extraer el nombre del archivo del documento, por ejemplo, para mostrarlo en el título de una ventana. El método de proyecto Extraer nombre del archivo hace esto en Windows y Macintosh.
` Método de proyectoExtraer nombre del archiv
o `Extraer nombre del archivo
(Cadena) -> Cadena `Extraer nombre del archivo
( nombre largo del archivo ) -> nombre del archivo C_STRING(255;$1;$0) C_INTEGER($viLon;$viPos;$viCar;$viDirSimbol) $viDirSimbol:=Directory symbol $viLon:=Length($1) $viPos:=0 For ($viCar;$viLon;1;-1) If (Character code($1[[$viCar]])=$viDirSimbol) $viPos:=$viCar $viCar:=0 End if End for If ($viPos>0) $0:=Substring($1;$viPos+1) Else $0:=$1 End if If (<>vbDebugOn) ` Colocar esta variable en True o False en el Método de base On Startup If ($0="") TRACE End if End if
Extraer la ruta de acceso del nombre largo
Una vez haya obtenido el nombre largo del archivo (ruta de acceso+ nombre de archivo), puede necesitar extraer la ruta de acceso al archivo, por ejemplo para guardar otros documentos en la misma ubicación. El método de proyecto Extraer ruta de acceso hace esto en Windows y Macintosh.
C_STRING(255;$1;$0) C_STRING(1;$vsDirSimbol) C_INTEGER($viLon;$viPos;$viCar;$viDirSimbol) $viDirSimbol:=Directory symbol $viLon:=Length($1) $viPos:=0 For ($viCar;$viLon;1;-1) If (Character code($1[[$viCar]])=$viDirSimbol) $viPos:=$viCar $viCar:=0 End if End for If ($viPos>0) $0:=Substring($1;1;$viPos) Else $0:=$1 End if If (<>vbDebugOn) ` Colocar esta variable en True o False en el Método de base On Startup If ($0="") TRACE End if End if
` Método de proyecto Extraer ruta de acceso ` Extraer ruta de acceso ( Cadena) -> Cadena ` Extraer ruta de acceso ( Nombre largo ) -> Ruta de acceso
Ver también
Append document, CLOSE DOCUMENT, COPY DOCUMENT, Create document, CREATE FOLDER, DELETE DOCUMENT, Document creator, DOCUMENT LIST, Document type, FOLDER LIST, Get document position, GET DOCUMENT PROPERTIES, Get document size, MAP FILE TYPES, MOVE DOCUMENT, Open document, Select document, SET DOCUMENT CREATOR, SET DOCUMENT POSITION, SET DOCUMENT PROPERTIES, SET DOCUMENT SIZE, SET DOCUMENT TYPE, Test path name, VOLUME ATTRIBUTES, VOLUME LIST.