Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-05-2016
elrayo76 elrayo76 is offline
Miembro
 
Registrado: Jan 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 206
Poder: 15
elrayo76 Va por buen camino
Smile Añadir más de una ruta dentro de la "Library path" de Delphi

Tengo un Framework que se ha ido desarrollando con el tiempo y que se usa en varias aplicaciones. Este Framwork tiene varias carpetas dentro para separar mejor los fuentes que este contiene y no mezclar cosas que no tienen nada que ver.

Mi pregunta es la siguiente. Como se puede hacer para referencias en las Library Path todas estas carpetas sin necesdad de tener que poner cada una de ellas. El problema es que si en algún momento se crea una nueva carpeta, todos los desarrolladores que usan ese Framework se tienen que enterar para agregar la nueva carpeta a las Library Path.

Tampoco quiero tener que hacer referencia de los fuentes dentro de los distintos proyectos, solo quiero que este la unit necesaria en las USES que corresponda.

Si existe alguna forma de solucionar esto y que no sea a travez de las library path también puede ser bienvenida para evaluar su posible utilización.

Aclaro que estoy usando RAD Studio XE8.

Saludos,
El Rayo
Responder Con Cita
  #2  
Antiguo 31-05-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: Dec 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.646
Poder: 27
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hasta donde yo sé no es posible hacerlo, o sea, que hay que añadir las rutas una a una. Me gustaría que algún otro compañero me pudiese desdecir. Por lo demás, tal vez pueda atacarse el asunto por otro lado, y es, ¿dónde guarda Delphi esa información? ¿En algún archivo de configuración? ¿En el registro de Windows? Entonces, tal vez podría prepararse algún programa o archivo BAT que se encargase del trabajo...
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #3  
Antiguo 31-05-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.120
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

En Delphi 7 el Library Path se almacena en el registro de Windows, en la clave HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Library.

Entonces para leer y/o agregar rutas, bastan dos funciones:
Código Delphi [-]
...
uses Registry;

function ReadSearchPath: string;
var
  rg: TRegistry;
begin
  rg := TRegistry.Create;
  try
    rg.RootKey := HKEY_CURRENT_USER;
    if rg.OpenKey('\Software\Borland\Delphi\7.0\Library', False)  then
    begin
      Result := rg.ReadString('Search Path');
      rg.CloseKey;
    end;
  finally
    rg.Free;
  end;
end;

procedure SaveSearchPath(const Path: string);
var
  rg: TRegistry;
begin
  rg := TRegistry.Create;
  try
    rg.RootKey := HKEY_CURRENT_USER;
    if rg.OpenKey('\Software\Borland\Delphi\7.0\Library', False)  then
    begin
      rg.WriteString('Search Path', Path);
      rg.CloseKey;
    end;
  finally
    rg.Free;
  end;
end;
Seguramente la clave debe cambiar bastante en XE8..., pero sería cosa de hurgar un poco en el registro para ver donde almacena esa información y probar...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 31-05-2016 a las 21:49:28.
Responder Con Cita
  #4  
Antiguo 01-06-2016
elrayo76 elrayo76 is offline
Miembro
 
Registrado: Jan 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 206
Poder: 15
elrayo76 Va por buen camino
Gracias por esponder, pero no necesio código para usar las claves del registro.

Lo que quiero es de alguna manera no tener que entrar a configurar todas las carpetas que tengan los fuentes como explique antes. Que se pueda poner algo que apunte a todas las carpetas existentes y si se crean nuevas carpetas con nuevos fuentes que ya este sin tener que tocar nada.

Lo que se me ocurre si no queda otra al ver tu código es generar un ejecutable que recorra todas las carpetas contenidas dentro de la principal las agregue automáticamente si no existen en esa ruta del registro, luego de eso que se ejecute el entorno de desarrollo de Delphi. Esto no es lo mejor pero puede funcionar.

Saludos,
El Rayo
Responder Con Cita
  #5  
Antiguo 02-06-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.120
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por elrayo76 Ver Mensaje
...
Lo que se me ocurre si no queda otra al ver tu código es generar un ejecutable que recorra todas las carpetas contenidas dentro de la principal las agregue automáticamente si no existen en esa ruta del registro, luego de eso que se ejecute el entorno de desarrollo de Delphi. Esto no es lo mejor pero puede funcionar.
Si esa era la idea. Recorrer lineal o recursivamente (según lo requiera la estructura) la carpeta padre e incluir las carpetas inexistentes en donde Delphi lee el Library Path almacenado.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 02-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
 
Registrado: Aug 2013
Ubicación: Argentina
Posts: 1.858
Poder: 10
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Se me ocurren dos soluciones:

1. Agregar explicitamente las unidades que se deben importar al proyecto, esto es, no usar el library path. Puede resultar engorroso, pero tiene la enorme ventaja de que los tiempos de compilacion disminuyen enormemente. Un library path cargado siempre es mas lento de procesar. Y si el proyecto es grande + el library path esta cargado, parece que estamos trabajando en C++ (no se lo tomen a mal los adeptos por favor ).

Podrias dejar un proyecto "esqueleto" o "template" con todas las unidades, mantenerlo con control de versiones y siempre actualizarlo cuando se agregan nuevas unidades

2. Este metodo nunca lo probe. Seria no utilizar los .pas directamente, sino usar los .dcu. Te creas un paquete con tu framework, y lo compilas. Pones que el output folder sea por ejemplo "C:\framework\{$PLATFORM}\{$CONFIG}

No me acuerdo exactamente los nombres de las pseudo variables, pero la idea es que te queden

"C:\framework\Win32\Release\"
"C:\framework\Win32\Debug\"
"C:\framework\Win64\" ...

Dentro de cada una de esas carpetas, estan los .dcu correspodientes. No los organices en carpetas como el codigo fuente de tu framework; dejalos todos en la raiz.

Ahora agregas estas carpetas a tu library path y listo, en un solo directorio tenes el codigo ya compilado y listo para usar
Responder Con Cita
  #7  
Antiguo 02-06-2016
elrayo76 elrayo76 is offline
Miembro
 
Registrado: Jan 2004
Ubicación: En la tierra, por eso mis archivos en la tierra y no en la nuebe...
Posts: 206
Poder: 15
elrayo76 Va por buen camino
AgusinOrtu, lo que dices en el punto 2 tampoco lo he probado pero si llego a ir por ese camino, será cuaestión de ver como resulta.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Library Path en FPC de iOS kotai FireMonkey 5 18-06-2012 12:34:52
Ruta/Dirección/Path en PC Remoto jhonalone Redes 12 16-10-2011 22:00:38
Añadir Ruta a un archivo de texto.. BuRtOn Varios 37 15-07-2008 05:59:07
The path could no be found (no se encentra la ruta) Lucas_diaz1810 Conexión con bases de datos 4 20-09-2007 19:58:53
Error: Firebird Client library not found in the path. Tauro78 Firebird e Interbase 1 14-02-2007 16:13:47


La franja horaria es GMT +2. Ahora son las 13:57:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi