SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Goselito_0 en Jueves 11 de Diciembre de 2008, 13:34

Título: ¿Builder puede saber en que carpeta está el ejecutable?
Publicado por: Goselito_0 en Jueves 11 de Diciembre de 2008, 13:34
¿Es posible que Builder sepa en que carpeta se encuentra el ejecutable?
El caso es que el programa debe crear unos resultados en dicha carpeta y en cada ordenador ésta será distina, por esto necesito extraer la carpeta en la que se encuentra el ejecutable.

Muchas gracias de antemano, cualquier ayuda será de gran utilidad.
Título: Re: ¿Builder puede saber en que carpeta está el ejecutable?
Publicado por: m0skit0 en Jueves 11 de Diciembre de 2008, 13:53
Si no usas ninguna ruta en el nombre de los ficheros, se guardarán donde el ejecutable.
Título: Re: ¿Builder puede saber en que carpeta está el ejecutable?
Publicado por: Eternal Idol en Jueves 11 de Diciembre de 2008, 14:43
Cuando arranca el programa: GetCurrentDirectory (http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx). Y sino GetModuleFileName (http://msdn.microsoft.com/en-us/library/ms683197.aspx) con el modulo como NULL (0).
Título: Re: ¿Builder puede saber en que carpeta está el ejecutable?
Publicado por: rfog en Jueves 11 de Diciembre de 2008, 19:27
Cita de: "m0skit0"
Si no usas ninguna ruta en el nombre de los ficheros, se guardarán donde el ejecutable.

Hola.

No necesariamente, se guarda en el directorio actual. El que en general sean el mismo no quiere decir que siempre vayan a hacerlo. Una forma de cambiarlo es poner otra ruta en el "Start In" (lo siento mis Windows están en inglés) del acceso directo.
Título: Re: ¿Builder puede saber en que carpeta está el ejecutable?
Publicado por: m0skit0 en Viernes 12 de Diciembre de 2008, 09:11
Cita de: "rfog"
No necesariamente, se guarda en el directorio actual
¿El actual de qué? Se guarda en el directorio de trabajo del ejecutable, que, si no se modifica explícitamente, es el directorio de ejecución.
Título: Re: ¿Builder puede saber en que carpeta está el ejecutable?
Publicado por: Eternal Idol en Viernes 12 de Diciembre de 2008, 09:45
Cita de: "m0skit0"
¿El actual de qué? Se guarda en el directorio de trabajo del ejecutable, que, si no se modifica explícitamente, es el directorio de ejecución.

Como bien dijo rfog es el directorio actual, GetCurrentDirectory: Retrieves the current directory for the current process. Y no es correcto lo que decis ya que no necesariamente el directorio actual es el mismo donde se encuentra el ejecutable, ademas de el ejemplo que dio rfog se me ocurren otros dos casos, uno es ejecutando desde linea de comandos (ej. Z:>c:SRCejemplo.exe donde el directorio sera Z:) o desde el WinDbg donde nos permite especificar el "Start Directory".

Ademas CreateProcess (http://msdn.microsoft.com/en-us/library/ms682425.aspx):
  __in_opt     LPCTSTR lpCurrentDirectory,

lpCurrentDirectory [in, optional]
The full path to the current directory for the process. The string can also specify a UNC path.
If this parameter is NULL, the new process will have the same current drive and directory as the calling process. (This feature is provided primarily for shells that need to start an application and specify its initial drive and working directory.)