PDA

Ver la Versión Completa : Directorio actual


santiago14
15-03-2004, 23:03:50
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:


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
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
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:

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
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.