Rutas de Archivos en Visual FoxPro

2,428 views
Skip to first unread message

integral

unread,
Oct 1, 2014, 1:44:37 PM10/1/14
to publice...@googlegroups.com
Buenos Dias Estimados Amigos :

Les comento que tengo un problema  con las rutas de los archivos de mi proyecto:

- Ubico  cada uno de mis archivos de la siguiente manera:

1- Coloco los Archivos en la Carpeta principal: "C:\SISGROUP\APLICACION\"   dentro de APLICACION tengo los siguientes Subdirectorios:

 Bmps, Clases, Datos, Forms, Images, Prgs, Iconos, Frx, Styles, Vcx


2 - Cada vez que ejecuto MAIN.PRG  me da el Error: Que no encuentra las CLASES y asi sucesivamente.

En el caso correcto la secuencia seria MAIN.PRG llama al formulario ENTRADA y valida accesos, si  es correcto llama al menu del FOXRIBBON

No entiendo por qué no encuentra loas archivos si estan dentro de cada carpeta.

Les agradezco me puedan ayudar.

Saludos,

INTEGRAL.

MAIN.PRG

Antonio.xt

unread,
Oct 1, 2014, 1:51:49 PM10/1/14
to publice...@googlegroups.com

Tienes 2 opciones para eso:

1) Definir el SET PATH TO Bmps; Clases; Datos; Forms; Images; Prgs; Iconos; Frx

2 Llamar a cada archivo con su directorio, por ejemplo: DO FORM Forms\MiFormulario, o SET CLASSLIB TO Clases\MiClase

Aunque es mejor la opcion 1, no tienes que especificar le ubicacion en cada ejecucion de archivo.

GETIANG

unread,
Oct 1, 2014, 1:56:15 PM10/1/14
to publice...@googlegroups.com
Buenas tardes integral

Aquí te envío unas lineas...!

gcPath = ADDBS(JUSTPATH(SYS(16,1)))
lcEjec  = gcPath
lcDerut = SUBSTR(lcEjec, AT(":", lcEjec) - 1)
CD LEFT(lcDerut, RAT("\", lcDerut))
lcRutaExe = FULLPATH(CURDIR())
SET DEFAULT TO (gcPath)
*!* Path Del Sistema
SET PATH TO Clases,xxx,xxx,xxx



Fernando D. Bozzo

unread,
Oct 1, 2014, 1:58:09 PM10/1/14
to publice...@googlegroups.com

Jose Manuel Urbaez Mendez

unread,
Oct 1, 2014, 2:37:06 PM10/1/14
to publice...@googlegroups.com
Integral, esa situacion la resuelvo con lo siguiente


ruta_prog = sys(16)
ini_p = rat("\",ruta_prog,2)   &&Obtiene la ruta del programa que se esta ejecutando
ini_d = rat(":",ruta_prog)

disco = substr(ruta_prog, ini_d-1, 2)

rutas = disco + "\directoriodelproyecto\dbs;    " +;
        disco + "\directoriodelproyecto\prg;    " +;
        disco + "\directoriodelproyecto\rpt;    " +;
        disco + "\directoriodelproyecto\clases; " +;
        disco + "\directoriodelproyecto\comunes;" +;
        disco + "\directoriodelproyecto\bmps;   " +;
        disco + "\directoriodelproyecto;" +;
        disco + "\directoriodelproyecto\img;" 
        
        
rutas_p = "set path to " + rutas
&rutas_p


Espero te funcione

Mauricio Gonzalez

unread,
Oct 1, 2014, 2:40:09 PM10/1/14
to publice...@googlegroups.com
Integral, tienes un pequeño error en la definicion de los PATH:

IMAGES = camino + "\IMAGEN\"
PRGS   = camino + "\PRGS\"
STYLES = camino + "\STYLES\"
VCX    = camino + "\VCX\"

SET PATH To BMPS, CLASES, DATOS, FORMS, FRX, ICONOS, IMAGES, PRGS, STYLES, VCX 
*
Esto posiblemente sea el error.

Fernando D. Bozzo

unread,
Oct 1, 2014, 2:40:27 PM10/1/14
to publice...@googlegroups.com
José Manuel:

No es una buena idea poner rutas absolutas en el PATH, porque te hacen dependiente de ella.
Usar rutas relativas te independiza de eso, y hace que tu desarrollo funcione en cualquier directorio.


Saludos.-

Víctor Hugo Espínola Domínguez

unread,
Oct 1, 2014, 2:51:33 PM10/1/14
to publice...@googlegroups.com
Hola Integral

En la ventana de comandos escribe:

? CURDIR()

Debe mosrar: \SISGROUP\APLICACION\

Si no es así cambiate a ese directorio con el comando CD

El proyecto Aplicacion.pj* también debe estar en ese directorio.

Saludos,
Víctor.


Antonio Meza

unread,
Oct 1, 2014, 5:31:49 PM10/1/14
to publice...@googlegroups.com
En lo personal trato de no complicarme la vida jajaj y por eso en mi PRG Inicial tengo esta instrucción al principio

* Solo para Desarrollo
IF VERSION(2) = 2
SET DEFAULT TO C:\Users\admin\Documents\developer\fusion
ENDIF

Si tengo que correr el programa en otra carpeta o maquina, solo modifico esta ruta y todo trabaja sin problema y sencillo una sola linea, de hecho hay como 3 o 4 formas de saber si esta en modo desarrollo, pero bueno uso esta jeje

Ahora bien, nunca me ha gustado usar por ejemplo SET PATH TO Bmps; Clases; Datos; Forms; Images; Prgs; Iconos; Frx porque esto nos mal acostumbra, ya que al abrir un formulario solo pones do form miformulario.scx, y entonces para que tengo mi carpeta FORMS? es mejor Do form forms\miformulario.scx y lo mismo con las clases y funciones e imágenes. si no para que están las carpetas y el ordenamiento lógico que estas proporcionan.

saludos
Antonio Meza

integral

unread,
Oct 2, 2014, 12:28:36 AM10/2/14
to publice...@googlegroups.com
Gracias Amigos por sus comentarios y sugerencias...

Resolví mi problema con el direccionamiento de las rutas establecidas...

Saludos,

INTEGRAL


El miércoles, 1 de octubre de 2014 12:44:37 UTC-5, integral escribió:

HernanCano

unread,
Oct 2, 2014, 1:34:51 AM10/2/14
to publice...@googlegroups.com
Amigo "integral":

He revisado tu MAIN.PRG.

La solución a tu problema está en hacer lo sgte:

- Suprime las vbles que están entre 
SET DEFAULT TO &camino
y
SET PATH To BMPS, CLASES, DATOS, FORMS, FRX, ICONOS, IMAGES, PRGS, STYLES, VCX 

Suprime también el PUBLIC que los referencia.
No son necesario para el resto del código y sólo te confunden.

- Cambia 
SET DEFAULT TO &camino
por 
CD (JUSTPATH(SYS(16)))

de acuerdo a la recomendación de Fernando en el link que te da (seguro que empezaste por ahí, pero desviaste el rumbo).

- Chequea si el nombre del dir de imágenes es IMAGEN o IMAGES. Creo que debería ser IMAGES (¿por aquí empezarían tus errores?).

- Si en el SET PATH incluyes VCX, entonces en los SET CLASS no necesitas los vcx\; pero aún sí funcionarán bien.

- Estas cuatro líneas

WTemp = "C:\WINDOWS\TEMP\"
IF EMPTY(CURDIR("&WTemp"))
MD "&WTemp"
ENDIF

deberías cambiarlas por la sola sgte línea:

WTemp = sys(2023)

- Quizá no sea correcta la sgte instrucción:
RELEASE CLASSLIB vcx\FoxRibbon.vcx, vcx\MyDesigns.vcx, vcx\MisOpciones.vcx

me parece que debertía ser:
RELEASE CLASSLIB FoxRibbon, MyDesigns, MisOpciones

((pero no he probado ésto))

- Quizá debas cambiar
_SCREEN.REMOVEOBJECT("oImg")
por 
if type('_SCREEN.oImg')<>'U'
   _SCREEN.REMOVEOBJECT("oImg")
endif

***
Reply all
Reply to author
Forward
0 new messages