Obtener directorio y subdirectorio de mi sistema.

571 views
Skip to first unread message

Saúl Piña

unread,
Jan 8, 2015, 5:05:15 PM1/8/15
to publice...@googlegroups.com
Saludos, quiero des-anclar mi sistema para que no importando si se cambia el nombre de la carpeta donde esté el sistema, siempre trabajar con los subdirectorios, mi duda es como podria hacer por ejemplo, accesar y mostrar imagenes: sin importar la unidad y directorio principal del sistema?

lcNameCliente=allt(Thisform.txtCliente.value)  &&Carlos

lcUnid=sys(5)
lcDir=sys(2003)
lcDirectorio=lcUnid+lcDir
thisform.image1.picture=lcDirectorio+"\Clientes\"+lcNameCliente+".png"
thisform.image1.visible=.t.

Existirá otra opcion, en donde yo pueda solo trabajar con subdirectorios, sin importar Unidad Actual y Directorio Actual, y además que me permita guardar segun el ejemplo:

Guardar asi:
Clientes\Carlos.png

y no como esto:
C:\Sistema\Clientes\Carlos.png

Alguna sugerencia?

gracias.


edgar suarez kummers

unread,
Jan 8, 2015, 5:08:40 PM1/8/15
to publice...@googlegroups.com
Con ese Path absoluto estás jodido.
 
No puedes hacer un instalador que siempre los llevará a Archivos de Programa.
 
Creo que debes estudiar eso del SET PATH
 
 

Antonio.xt

unread,
Jan 8, 2015, 5:11:53 PM1/8/15
to publice...@googlegroups.com

Para eso yo incluyo esta linea al principio del programa principal.

CD (ADDBS(JUSTPATH(SYS(16,1))))

Fernando D. Bozzo

unread,
Jan 8, 2015, 5:53:49 PM1/8/15
to publice...@googlegroups.com
Hola Saúl:

Sobre este tema hice un artículo que te puede interesar:

Crear un proyecto FoxPro ¿por dónde comenzar?

Saludos.-

César Pistiner

unread,
Jan 8, 2015, 8:37:29 PM1/8/15
to publice...@googlegroups.com

Muy buen artículo Fernando,

Te felicito, más claro agregale agua!!

Saludos,
César

Fernando D. Bozzo

unread,
Jan 9, 2015, 1:57:48 AM1/9/15
to publice...@googlegroups.com
Gracias César :-)

Jorge L. Florez C.

unread,
Jan 9, 2015, 10:13:47 AM1/9/15
to publice...@googlegroups.com
Hola.

Lo que puedes hacer es crear un archivo de configuración en formato txt que contenga las rutas de trabajo, ya sea para tablas, temporales, imagenes, etc, etc, etc, como los antiguos archivos .INI, esos valores cargarlos a variables globales o a las propiedades de un objeto.

Saludos.
Jorge Florez
Lima - Perú


Saúl Piña

unread,
Jan 9, 2015, 10:33:57 AM1/9/15
to publice...@googlegroups.com
Saludos Fernando y comunidad, una pregunta:

Hasta donde yo he aprendido, cuando se realiza una instalación de ejecutable en la pc cliente incluyo algo como esto:

Raiz \
              Aqui incluyo:
              Sistema.exe
              Config.fpw
              Icono del ejecutable.ico
              Fondo de la pantalla principal de VFP  .jpg o .png
              Librerias .dll    (Para que se pueda ejecutar el .exe)
             Programas .app (por ejemplo FoxyPreviewer.app)

   \Datos   <---- Incluyo todos los archivos tales como .dbc, dbf, cdx
  

Mi pregunta es:  Asi estoy correcto?  hasta donde yo he entendido, los demas subdirectorios, como
\Forms, \Clases, \Menus, \Reports, etc.  solo son para el proyecto de desarrollo del software.


Gracias.

Fernando D. Bozzo

unread,
Jan 9, 2015, 10:38:49 AM1/9/15
to publice...@googlegroups.com

Hola Saúl:

No se si leíste el artículo, parece que no, pero lo que pusiste es bastante correcto, salvo que el config.fpw no va en la raíz.

Saludos

César Pistiner

unread,
Jan 9, 2015, 12:47:39 PM1/9/15
to publice...@googlegroups.com
En el artículo estaaaaa !! :)

Saludos,
César

Fernando D. Bozzo

unread,
Jan 9, 2015, 1:46:02 PM1/9/15
to publice...@googlegroups.com
Está en el subdirectorio \config, no en la raiz. No es igual, porque en la raiz FoxPro lo encuentra y lo usa, en \config no lo encuentra (en desarrollo) y no lo usa, pero como se incluye en el EXE, el EXE sí lo usa.

Ahi está explicado todo esto y porqué.


Saúl Piña

unread,
Jan 9, 2015, 2:54:13 PM1/9/15
to publice...@googlegroups.com
si lo lei, pero voy a revisar detenidamente el parrafo del Config.

Saúl Piña

unread,
Jan 9, 2015, 2:58:19 PM1/9/15
to publice...@googlegroups.com
Ya lo volví a leer, pero me refiero a fisicamente, no debo incluir los forms, prg, y otros al cliente, porque se trata de entregar el codigo fuente del software.

Fernando D. Bozzo

unread,
Jan 9, 2015, 4:12:34 PM1/9/15
to publice...@googlegroups.com
Hola Saúl:

Creo que estás mezclando las cosas. Inicialmente preguntaste por el PATH, pero no comentaste nada sobre entrregar o no el código fuente. Son temas distintos.

Respecto del código fuente, lo que se suele entregar es un ZIP con toda la estructura de directorios del sistema dentro, y además el EXE compilado y demás componentes compilados y listos para funcionar, junto a una guía explicando cómo se debe compilar y cómo se debe distribuir el ejecutable y las tablas.

Pero, ¿cuál es el problema y qué tiene que ver todo esto con el config? o_O


Saúl Piña

unread,
Jan 9, 2015, 4:38:23 PM1/9/15
to publice...@googlegroups.com
Y creo que volví a confundirte Fernando, mi pregunta es, por ejemplo:

Digamos que ya tengo el proyecto terminado y compilado, listo para ser distribuido,  mi pregunta es

¿De todo el proyecto (subdirectorios) que NO debo incluir para poder crear el instalador o al contrario, que se supone que subdirectorio o archivos debo incluir para poder distribuir un instalador al cliente?

gracias y disculpas..

Fernando D. Bozzo

unread,
Jan 9, 2015, 5:58:18 PM1/9/15
to publice...@googlegroups.com
Suponiendo que tengas una estructura de directorios similar a la del artículo:

\raiz           => Dir.principal del PJX y PRG principal (ej: c:\desa\miapp)

     \datos     => Archivos DBF,FPT,CDX,DBC,DCX,DCT,SQL (y texto DB2/DC2)

     \bmps      => Archivos gráficos JPG,PNG,etc

     \forms     => Archivos SCX/SCX (y texto SCA/SC2)

     \clases    => Archivos VCX/VCT (y texto VCA/VC2)

     \include   => Archivos "include" (.H)

     \menus     => Archivos MNX/MNT

     \config    => Aquí puede ir el CONFIG.FPW 

     \prgs      => Archivos PRG

     \reports   => Archivos FRX/FRT/LBX/LBT (y texto FRA/FR2/LBA/LB2)


La parte roja sería la distribuible (EXE + datos + imágenes externas [si hay] ) y la azul sería exclusiva de Desarrollo. Lo que pasa es que durante el desarrollo, la parte roja también es usada en el mismo desarrollo para las pruebas.

Ahora bien, la parte de DATOS obviamente se distribuye inicialmente con un juego de tablas vacías, y no con tus datos de prueba de desarrollo. Lo que se suele hacer es tener otra estructura de directorios para poner todo lo que se va a distribuir (instalar) en el cliente, por ejemplo:

\raiz           => Dir.principal del PJX y PRG principal (ej: c:\desa\miapp)

     \datos     => Archivos DBF,FPT,CDX,DBC,DCX,DCT,SQL (y texto DB2/DC2)

     \bmps      => Archivos gráficos JPG,PNG,etc

     \distrib           => Dir.del EXE principal

             \datos     => Archivos DBF,FPT,CDX,DBC,DCX,DCT,SQL (y texto DB2/DC2)

             \bmps      => Archivos gráficos JPG,PNG,etc que no se incluyan en el EXE

     \forms     => Archivos SCX/SCX (y texto SCA/SC2)

             \

     \forms     => Archivos SCX/SCX (y texto SCA/SC2)

     \etc...


Como ves, el directorio distrib contiene todo lo que se va a distribuir.

Como se prepara:

  • Generás el EXE en la raíz, donde está el PJX y luego lo copiás en distrib
  • En datos ponés un juego de tablas vacías, aunque puede que haya también tablas con valores fijos, que sabés que va a usar (descuentos, colores, permisos, etc)

Si usás un instalador, por ejemplo el Inno Setup (gratuito), tendrás que indicarle que incluya todo lo que hay dentro de distrib, para que al instalarse se mantenga la estructura de directorios. Esta instalación conviene hacerla en un directorio que no esté dentro de "Program Files" o "Archivos de Programa", porque de otro modo tendrías que hacer una estructura de directorios distinta, ya que dentro de esos directorios no podés tener la carpeta de datos, porque son de solo lectura.

Si no usás instalador y solamente instalás los runtimes de VFP 9 (más fácil) para poner el sistema por separado, entonces simplemente hacer un zip con el contenido del distrib y descomprimirlo en un directorio cualquiera de la PC del cliente (por ejemplo: c:\apps\tusistema, pero jamás en c:\ raíz), con la ventaja que cualquier cambio posterior al sistema simplemente se reemplaza el EXE y listo, ya que normalmente es lo único que se reemplaza en un sistema en mantenimiento.


Saludos.-

Saúl Piña

unread,
Jan 12, 2015, 10:56:21 AM1/12/15
to publice...@googlegroups.com
Wow!! 

me quedo más que claro lo que me explicas, y realmente esa era mi duda, que debo considerar como archivos de desarrollo y cuales son para distribucion y en que orden.
Reply all
Reply to author
Forward
0 new messages