La Import An CIA de Las Rutas en VFP

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

La importancia de las rutas en VFP

Artculo original: The importance of Paths in VFP (http://weblogs.foxite.com/andykramek/archive/2005/03/21/197.aspx [2]) Autor:Andy Kramek (http://www.tightlinecomputers.com [3]) Traducido por: Ana Mara Bisb York (amby@telefonica.net [4]) Para: PortalFox (http://www.portalfox.com [5])

Uno de los problemas que he visto con mayor frecuencia en los foros es cmo trabaja VFP con los archivos. Sobre este punto el Administrador de proyectos es una bendicin y una maldicin, ambas cosas. Una bendicin porque, una vez que trabajamos desde el Administrador de proyecto, el controla por nosotros los aspectos relacionados con encontrar y abrir archivos . Una maldicin, porque somos de la tendencia a olvidar que VFP requiere internamente de rutas. Una pregunta frecuente es algo as: Cuando llamo desde el Administrador de programas mi formulario abre sus tablas; pero si lo hago por programa, me abre el cuadro de dilogo Buscar. Qu est mal? La respuesta es, por supuesto, que VFP no ha recibo la ruta de bsqueda. Aunque nunca lo he visto formalmente documentado, parece ser que VFP tiene un mtodo muy estricto cuando se le pide encontrar algo. Por ejemplo al llamar a una funcin VFP verifica primero el programa que se est ejecutando actualmente, luego otros programas en memoria, luego el directorio actual, luego los directorios que estn en su propia ruta de bsqueda y finalmente la ruta de bsqueda de Windows. De forma similar, cuando buscamos por un nombre de tabla con referencia incompleta (por ejemplo: USE account, a diferencia de USE C:\Myfiles\account.dbf), busca primero en la carpeta seleccionada actualmente, luego entre su propia ruta y finalmente en la ruta de bsqueda de Windows. Vea que las carpetas de su propia ruta se verifican siempre antes que el nivel del sistema operativo. La importancia de esto es que cuando le asigna a VFP su propia ruta de bsqueda, buscar los archivos sin tener que ir a travs del sistema operativo - claramente ser mucho ms eficiente ya que la ruta necesita incluir solamente aquellos lugares que son estrictamente relevantes para VFP. El directorio predeterminado En ausencia de cualquier otra informacin Visual FoxPro utiliza la unidad y el directorio actualmente seleccionados como su "ruta" y podr restablecer esta configuracin utilizando simplemente:
SET PATH TO

Sin embargo, para aplicaciones ms sofisticadas, y ciertamente para el desarrollo, tendr una estructura de directorios y debe establecer siempre la ruta de bsqueda adecuada que

incluya todos los directorios requeridos. Lo primero que debe hacer es establecer el directorio predeterminado y existen varias formas (como siempre) para hacerlo:

Especificar Default en al Archivo de configuracin (CONFIG) utilizando DEFAULT = <ruta al directorio> Establecer la ruta predeterminada directamente en el cdigo utilizando SET DEFAULT TO <ruta al directorio> Cambiar de directorio interactivamente utilizando SET DEFAULT TO (GetDir()). (Los comandos 'CD' (o 'CHDIR') se pueden utilizar para cambiar tanto la unidad como el directorio a una localizacin especificada).

Aj! LOCFILE() cambia la ruta. Observe que utilizando las funciones "Get" o "Put" (ejemplo GetDir()) generalmente no cambia ni el directorio predeterminado ni la ruta. La excepcin a esta regla es una caracterstica aparentemente no documentada (en VFP) de la funcin LOCFILE() la que agrega la carpeta seleccionada a la ruta de bsqueda de VFP como muestra el siguiente cdigo:
*** Limpia la ruta SET PATH TO ? SET( 'path' ) && Devuelve nada USE LOCFILE( 'account' ) && Localiza un archivo ? SET( 'path' ) && Devuelve C:\Projects\Data

Este comportamiento ha formado parte del lenguaje al menos desde FoxPro 2.6W y es interesante, est documentada en la Ayuda de FoxPro 2.6W de esta forma: El dilogo Open (Abrir) puede ser utilizado para localizar un archivo. Al escoger un archivo del dilogo, se devuelve el nombre del archivo con la ruta, la cual es agregada a la ruta de FoxPro. Sin embargo, parece que en la creacin del fichero de ayuda de VFP la ltima frase se perdi y contina perdida en el fichero de ayuda de VFP 9.0 (vea abajo), incluso, como podemos ver, este comportamiento aun se aplica. El dilogo Open (Abrir) puede ser utilizado para localizar un archivo. Al escoger un archivo del dilogo, se devuelve el nombre del archivo con la ruta. Utilizar el comando SET PATH Establecer la ruta es de por s, simple. Es necesario solamente utilizar el comando SET PATH seguido por la lista de directorios que desea incluir. No es necesario indicar las rutas enteras para los subdirectorios, es suficiente con separarlos por comas o puntos y comas. El ejemplo muestra una ruta de bsqueda tpica en la ruta de Visual FoxPro.
SET PATH TO G:\VFP90;C:\VFP90\PROJECTS\;DATA;FORMS;LIBS;PROGS;UTILS

Para recuperar la configuracin de la ruta actual, puede utilizar la funcin SET (que trabajar con la mayora de los comandos SET de Visual FoxPro) como se muestra debajo. Puede asignar el resultado directamente a una variable o, como se muestra debajo, directamente al portapapeles para que pueda pegar la ruta actual en un programa o archivo de documentacin:
_ClipText = SET('PATH')

Visual FoxPro permite el uso de ambas configuraciones UNC para nombrar rutas, como:
\\SERVERNAME\DIRECTORYNAME\

y permite el uso de espacios embebidos (cuando se encierran entre comillas) en nombres de directorio como:
"..\COMMON DIRECTORY\"

Aunque, se permite el ltimo caso, yo suscribo el principio de que "aunque puede utilizar espacios embebidos, el arsnico es ms rpido" (a propsito, se aplica lo mismo para nombres de ficheros) Aunque mejoran lalegibilidad, los espacios pueden causar adems problemas al tratar de controlar los nombres de archivos y los directorios por programa y pienso aun que el mejor consejo es evitar tanto como sea posible en las aplicaciones. Por ejemplo, el siguiente cdigo trabaja perfectamente para nombres convencionales de directorios; pero falla si el directorio tiene espacios embebidos:
LOCAL lcDir lcDir = GETDIR() IF ! EMPTY(lcDir) SET DEFAULT TO &lcDir ENDIF

VFP 9.0 introdujo la clusula ADDITIVE al comando SET PATH para permitir que fragmentos de ruta sean agregados dinmicamente (interesantemente, es lo que el LOCFILE() ya vena haciendo desde siempre) Determinar la configuracin actual Afortunadamente, Visual FoxPro, nos brinda varias funciones que nos ayudan a localizar dnde nos encontramos en cada momento:

SYS(2004) devuelve el directorio desde el que se ha iniciado Visual FoxPro; pero en tiempo de ejecucin en una aplicacin distribuida., ser siempre la localizacin de la DLL runtime (que es normalmente la versin adecuada del directorio 'System' de Window. HOME() devuelve el directorio por defecto desde el que se ha iniciado Visual FoxPro; pero tiene varias opciones tiles adicionales.

_VFP.FULLNAME accede a la propiedad del objeto aplicacin de Visual FoxPro que contiene la ruta entera y el nombre de fichero que fue utilizado para iniciar VFP. FULLPATH('') o FULLPATH(CURDIR()) devuelve toda la unidad y la ruta del directorio actual (incluyendo la barra final "\") SYS(5) devuelve la unidad predeterminada (incluyendo los dos puntos ":") CD (trabaja solamente de forma interactiva en la ventana de comandos) muestra la unidad y carpeta actual en la ventana de salida actual - pero tambin cambia la unidad y el directorio, todo en un nico comando. CHDIR cambia la unidad o directorio especificado (igual que CD); pero no informa del estado actual (y no provoca desorden en sus formularios). CURDIR() devuelve el directorio actual (con la barra final "\"); pero no la unidad. SYS(2450) introducido en VFP 8.0 controla si una aplicacin busca internamente antes de acceder a la ruta de bsqueda externa.

Establecer la ruta Generalmente, yo utilizo el siguiente tipo de cdigo en mis programas de inicio para asegurarme de que siempre tengo el conjunto de rutas apropiadas - tanto en tiempo de desarrollo como en la aplicacin EXE compilada.
IF VERSION(2) = 0 *** Inicio en tiempo de ejecucin, solamente: Inicio de VFP + Directorio actual + "\DATA" lcPath = HOME() + ";" + ADDBS( FULLPATH( CURDIR() )) + "DATA" ELSE *** Inicio en tiempo de diseo - toda la ruta del entorno de desarrollo lcPath = HOME() + ";" + ADDBS( FULLPATH( CURDIR() )) + ";FORMS;LIBS;DATA;PROGS;UTILS" *** Deseamos configurar asserts ON en modo de desarrollo SET ASSERTS ON ENDIF SET PATH TO (lcPath)

Vea que diferencia entre las rutas necesarias para el desarrollo y las rutas ms simplificadas para la implementacin en tiempo de ejecucin.

[ Volver a Andy Kramek [6] | ndice de secciones [7] ] Enlaces [1] http://www.portalfox.com/index.php?name=Sections&req=viewarticle&artid=70&allpages =1&theme=Printer [2] http://weblogs.foxite.com/andykramek/archive/2005/03/21/197.aspx [3] http://www.tightlinecomputers.com [4] http://www.portalfox.com/mailto:amby@telefonica.net [5] http://www.portalfox.com

[6] http://www.portalfox.com/index.php?name=Sections&req=listarticles&secid=15 [7] http://www.portalfox.com/index.php?name=Sections

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy