Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Directorio actual (https://www.clubdelphi.com/foros/showthread.php?t=8260)

santiago14 15-03-2004 23:03:50

Directorio actual
 
Necesito saber el directorio donde esta mi aplicacion delphi (.exe), por ejemplo, si el ejecutable esta en "c:\aplicacion" quisiera obtener este camino.

gracias

__cadetill 15-03-2004 23:16:05

ExtractFilePath(Application.ExeName)

eduarcol 15-03-2004 23:17:18

ExtractDir(Application.FileName);

Por alli va el asunto no tengo delphi a mano para decirte bien, pero si no me equivoco es asi

eduarcol 15-03-2004 23:18:06

Pues respondimos al mismo tiempo ;)

jachguate 16-03-2004 06:42:27

Solo quiero aclarar, debido al título del hilo, que el directorio del ejecutable de tu aplicación, no necesariamente va a ser el "directorio actual", que en principio sería el que se coloque en el campo "iniciar en" de un acceso directo. Claro que si no se indica... serán el mismo, pero cabe la posibilidad que sean diferentes.

Cual de los dos es el que te interesa?

roman 16-03-2004 06:55:27

Otra froma de obtener el directorio del ejecutable:

ParamStr(0);

(de los viejos tiempos del DOS)

// Saludos

¡Ah! Muy buena observación de jachguate. Si lo que buscas es el directorio actual, tal como indica el título del mensaje, puedes usar la función GetDir.

jachguate 16-03-2004 07:03:29

Para completar lo dicho por roman, y para obtener solamente la ruta completa del ejecutable, al viejo estilo de DOS, y aprovechando las mejoras de Delphi...

ExtractFilePath(ExpandFileName(ParamStr(0)));

:p

Hasta luego.

roman 16-03-2004 07:12:26

Esteeee, sip, tienes razón, se me olvidaba quitar el nombre del archivo. Pero ¿es necesario el ExpandFileName en este caso? Me parece que ParamStr siempre da la ruta expandida.

// Saludos

jachguate 16-03-2004 07:25:38

Pues la verdad.. no se si es una mala maña, quizas producto de una experiencia del pasado, que simplemente se convirtió en costumbre... ahora no tengo delphi a mano para probarlo... pero si santiago14 o vos roman pueden sacarnos de la duda... sería excelente.

Saludos.

roman 16-03-2004 07:38:24

Bueno, pues la ayuda de Delphi sólo indica:

Cita:

On Windows, ParamStr(0) returns the path and file name of the executing program
y en la prueba que hago devuelve, en efecto, la ruta completa.

// Saludos

marcoszorrilla 16-03-2004 08:02:29

ParmStr(0):C:\ARCHIVOS DE PROGRAMA\BORLAND\DELPHI5\BIN\PROJECT1.EXE

ExtractFilePath(ExpandFileName(ParamStr(0))):;
C:\ARCHIVOS DE PROGRAMA\BORLAND\DELPHI5\BIN\

Creo que si lo que se pide es únicamente la ruta completa y no el nombre del ejecutable, hay que utilizar lo propuesto por JachGuate.


Un Saludo.

roman 16-03-2004 08:13:54

Cita:

Empezado por marcoszorrilla
Creo que si lo que se pide es únicamente la ruta completa y no el nombre del ejecutable, hay que utilizar lo propuesto por JachGuate.

Totalmente cierto Marcos, a mí se me había pasado lo del nombre del archivo. La duda es sí es necesario ExpandFileName o basta ExtractFilePath.

// Saludos

__cadetill 16-03-2004 10:31:01

Cita:

Empezado por roman
Totalmente cierto Marcos, a mí se me había pasado lo del nombre del archivo. La duda es sí es necesario ExpandFileName o basta ExtractFilePath.

// Saludos

Según lo mostrado por Marcos, con ExtractFilePath sería suficiente

jachguate 16-03-2004 14:26:06

He realizado pruebas en delphi4 y delphi7, y en los casos probados, el ExpandFileName no es necesario.

Los casos probados son:
  • Ejecutar directamente el programa (via doble click en el exe o desde el ide)
  • invocar al ejecutable via path (es decir, estando en c:\windows, p. ej., e invocarlo en c:\ solamente con el nombre del exe)
  • Ejecutar el programa con un acceso directo y ruta de inicio diferente a la del ejecutable

Hay algun caso que se me haya escapado?

guillotmarc 16-03-2004 15:12:19

¿ En que S.O. lo has probado, seria interesante probarlo en un Windows 95/98 ?

Saludos.

marcoszorrilla 16-03-2004 15:40:45

Con Windows 98 funciona correctamente lo siguiente:

Código:

ShowMessage(ExtractFilePath(ParamStr(0)));
Resultado:
C:\ARCHIVOS DE PROGRAMA\BORLAND\DELPHI5\BIN\



Un Saludo.

roman 16-03-2004 16:25:00

De hecho sería un poco raro que se necesitara ExpandFileName. Al menos no estaría claro en qué casos ParamStr(0) da la ruta ya expandida y en qué casos no.

// Saludos

jachguate 16-03-2004 19:36:01

Yo lo he probado únicamente con windows Me.

santiago14 17-03-2004 03:06:24

Directorio actual
 
Para sintetizar, agradezco a todos sus respuestas. Confirmo que con extractPathFile es suficiente y utilizando application.exeName obtengo el nombre del ejecutable, por lo cual evito lo de expandFileName y ParamStr.
Otra vez se los agradezco y he quedado mas que satisfecho con sus respuestas, ah, con respecto a una de las citas que pedia probar en varios sistemas operativos, yo tengo windows 2000, professional y delphi6 enterprise y funcionan perfectamente todas las instrucciones citadas a lo largo de este hilo.


La franja horaria es GMT +2. Ahora son las 04:40:53.

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