Ir al contenido


Foto

Rutas o Paths y Directorios


  • Por favor identifícate para responder
20 respuestas en este tema

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 09 octubre 2013 - 05:09

En mi proyecto actualmente tengo mi BD en esta ruta:

D:\Proyectos DELPHI XE2 2013\Mi Proyecto\Data\MiBase.fdb


Cuando se compila un proyecto en Delphi XE2 coloca el ejecutable en:

D:\Proyectos DELPHI XE2 2013\Mi Proyecto\Win32\Debug\MiExe.exe

o en

D:\Proyectos DELPHI XE2 2013\Mi Proyecto\Win32\Release\MiExe.exe


Por lo tanto para que funcione debo de cambiar la ruta de mi BD asi:

D:\Proyectos DELPHI XE2 2013\Mi Proyecto\Win32\Debug\Data\MiBase.fdb


Al liberar una aplicacion probablemente quede en alguna de estas rutas:

C:\Archivos de programa (x86)\Mi Proyecto\MiExe.exe
C:\Archivos de programa (x86)\Mi Proyecto\Data\MiBD.fdb
o en

C:\Mi Proyecto\MiExe.exe
C:\Mi Proyecto\Data\MiBD.fdb


En delphi 7 o 2010 hacia algo como esto y funcionaba, sin embargo ahora quiero tener la BD en una carpeta separada

//Asignamos nombre de la base de datos
  ucDatabase.Database:=
        IncludeTrailingPathDelimiter('localhost:' +
                  ExtractFilePath(Paramstr(0))) + NombreBD;


¿Como debo de configurar la busqueda del path?

Saludos y gracias por la ayuda
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 10 octubre 2013 - 07:48

Saludos.

Usualmente para este caso se utiliza un archivo INI para guardar las rutas y demás configuraciones necesarias de la aplicación.

¿Te sirve?
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 10:20

Como lo indica mi buen amigo Rolphy, yo siempre he usado el registro de windows y/o archivos INI para declarar las rutas y todo lo que requiera en mis programas y que sean "volátiles", no me gusta tener que compilar cada vez que hay un cambio de alguna de las variables.

Saludos
  • 0

#4 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 11:41

Some sample please? (¿Algún ejemplo por favor?  :|  :




  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 01:03

Some sample please? (¿Algún ejemplo por favor?  :|  :


Que componente estas usando para conectarte a la base amigo?

Saludos
  • 0

#6 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 02:01

UniDAC con IBProvider



delphi
  1. //Asignamos nombre de la base de datos
  2.   ucDatabase.Database:= IncludeTrailingPathDelimiter('localhost:' + ExtractFilePath(Paramstr(0))) + 'Data\' + NombreBD;(ParamStr(0)))



  • 0

#7 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 10 octubre 2013 - 02:37

pero asi como lo tienes te bastaria con tener la bd siempre al lado del ejecutable, no termino de ver el problema...
  • 0

#8 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 03:32

Jeje

Yo quiero tener la BD en el directorio "Data" y asi esto aparece:

[Window Title]
ControlVehicular

[Content]
ERROR conectando con la base de datos.

Mensaje de ERROR:

unavailable database

¡La Aplicación se cerrara!

[OK]

He ahi el detalle.
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 03:32

UniDAC con IBProvider





delphi
  1.   //Asignamos nombre de la base de datos
  2.   inifile := TInifile.Create( ExtractFilePath(Paramstr(0)) + '\config.ini' );
  3.   Ruta := inifile.readString('BASE','RUTA','');
  4.   ucDatabase.Database:= Ruta;
  5.   inifile.Free;



Y en el CONFIG.INI

[ini]
[BASE]
Ruta=server:c:\ruta\base
[/ini]

De memoria, pero esa es la idea, te quitas de problemas

Saludos
  • 0

#10 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 10 octubre 2013 - 03:39

ok, con la opcio de Eliseo puedes dejar la data donde quieras, y a ti lo unico que te faltaba era el \ antes de data
  • 0

#11 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 03:53

Aqui ya se incluye el diagonal final



delphi
  1. IncludeTrailingPathDelimiter('localhost:' + ExtractFilePath(Paramstr(0)))



Resultando en esto:

locahost:d:\...\...\...\


  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 10 octubre 2013 - 04:27

si es verdad, no lo habia visto, pues lo unico que se me ocurre es la bd no este en esa ruta o que firebird client no este instalado
  • 0

#13 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 04:42

La bd si existe en esa ruta y el fb client tambien. Si asigno la ruta de la bd directamente en el componente todo funciona ok pero si lo hago por codigo no funciona. Esta prueba la he hecho usando solo una de las opciones a la vez.

:  8o|
  • 0

#14 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 05:13

Intenta con el INI mi estimado, no te compliques la vida usando ese IncludeTrailingPathDelimiter()

Saludos
  • 0

#15 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 09:05

Si, ya lo hice con el INI pero soy terco no puedo creer que Delphi no tenga esa capacidad o caracteristica  (li) 

En algun lugar del mundo ya es mediodia!!!

(b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b)
  • 0

#16 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 10 octubre 2013 - 09:59

Si, ya lo hice con el INI pero soy terco no puedo creer que Delphi no tenga esa capacidad o caracteristica  (li) 

En algun lugar del mundo ya es mediodia!!!

(b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b) (b)


Sigo sin entender que quieres hacer, de cualquiera de las formas debe de funcionar, de entrada yo no usaría la funcioncita esa IncludeTrailingPathDelimiter()

Yo lo haría así:



delphi
  1. ucDatabase.Database:= 'localhost:' + ExtractFilePath( Paramstr(0) ) + 'Data\' + NombreBD;



o así



delphi
  1. ucDatabase.Database:= 'localhost:' + ExtractFilePath( Paramstr(0) ) + '\Data\' + NombreBD;



Todo depende de que ExtractFilePath complete o no la última diagonal invertida.

Saludos

  • 0

#17 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 11 octubre 2013 - 09:51

Jeje

ExtractFilePath no incluye la \

Eso lo hace IncludeTrailingPathDelimiter()

y si al añadir el 'Data\' + NombreBD para buscar la base de datos no me funciona, eso es lo que no entiendo.


Repito: En algun lugar del mundo ya es mediodia  (b) (b) (b) (b) (b) (b) (b) y ademas es Viernes!!!!!!  (b) (b) (b) (b) (b) (b) (b) (b) (b)
  • 0

#18 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 11 octubre 2013 - 11:06

Jeje

ExtractFilePath no incluye la \

Eso lo hace IncludeTrailingPathDelimiter()

y si al añadir el 'Data\' + NombreBD para buscar la base de datos no me funciona, eso es lo que no entiendo.


Repito: En algun lugar del mundo ya es mediodia  (b) (b) (b) (b) (b) (b) (b) y ademas es Viernes!!!!!!  (b) (b) (b) (b) (b) (b) (b) (b) (b)


Pues vaya que es raro, yo lo uso en todos mis desarrollos, pero bueno, por eso he puesto la segunda opción agregando '\Data\' en lugar de 'Data\'



delphi
  1. ucDatabase.Database:= 'localhost:' + ExtractFilePath( Paramstr(0) ) + '\Data\' + NombreBD;



Saludos
  • 0

#19 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 11 octubre 2013 - 02:25

8o| 8o| 8o| 8o| 8o| 8o|

(li) (li) (li) (li) (li) (li) (li) (li)

ucDatabase.Database:= 'localhost:' + IncludeTrailingPathDelimiter(ExtractFilePath( Paramstr(0) )) + 'Data\' + NombreBD;


Funciona bien con IBDatabase pero con UniDac debe de quedar asi:

ucDatabase.Database:= IncludeTrailingPathDelimiter(ExtractFilePath( Paramstr(0) )) + 'Data\' + NombreBD;


Que cosas!!

mmm no encuentro como poner que esta resuelto este post....
  • 0

#20 FerCastro

FerCastro

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 636 mensajes
  • LocationCiudad de México

Escrito 15 octubre 2013 - 07:19

A ver espero no llegar tarde

DM.Conexion.Database := GetCurrentDir + '\data\db.fdb';

Lo que lo hago es crear una capeta llamada DATA dentro de la carpeta principal de la aplicación y a partir de ahi pues solo identifico donde estoy  y listo.

Saludos!!
  • 0




IP.Board spam blocked by CleanTalk.