SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: dfaba en Jueves 10 de Junio de 2004, 16:14

Título: Cómo Manejo El Path Actual?
Publicado por: dfaba en Jueves 10 de Junio de 2004, 16:14
Hola, mi problema es el siguiente:

   al añadir un archivo de ayuda para mi aplicación, Builder me genera el siguente
código:

Código: Text
  1. try
  2.         {
  3.                  Application->Initialize();
  4.                  Application->Title = "Verificador de iMelody";
  5. [B]                 Application->HelpFile = "verificador.hlp";[/B]
  6.                  Application->Run();
  7.         }
  8.         catch (Exception &exception)
  9.         {
  10.                  Application->ShowException(&exception);
  11.         }
  12.         return 0;
  13.  
Esto funciona correctamente hasta que desde la aplicación cambio el directorio actual al buscar un fichero para abrir con un OpenDialog; entonces ya no me encuentra el archivo verificador.hlp. ¿Cómo puedo solucionarlo?
Título: Re: Cómo Manejo El Path Actual?
Publicado por: Eternal Idol en Jueves 10 de Junio de 2004, 16:28
O en GetOpenFileName() le pasas OFN_NOCHANGEDIR como flag así no te cambia de directorio o utlizas el path completo del ejecutable para el archivo de ayuda.

Por ejemplo:

char *help_file = (char*)malloc(2048);
ZeroMemory(help_file,2048);
GetCurrentDirectory(help_file,2000);
strcat(help_file,"\\verificador.hlp");
try
       {
                Application->Initialize();
                Application->Title = "Verificador de iMelody";
                Application->HelpFile = help_file;
                Application->Run();
       }
       catch (Exception &exception)
       {
                Application->ShowException(&exception);
       }
       free(help_file);
       return 0;
Título: Re: Cómo Manejo El Path Actual?
Publicado por: dfaba en Jueves 10 de Junio de 2004, 22:16
Olé, muchas gracias!!

La segunda forma me va de fenómenos, no sabía que existía la función
GetCurrentDirectory, y estaba probando con funciones de C estándar,
como getcurdir(), así mucho mejor; gracias de nuevo!
Título: Re: Cómo Manejo El Path Actual?
Publicado por: Eternal Idol en Viernes 11 de Junio de 2004, 00:14
Esa una función de la API de Windows, si estas haciendo un programa con Borland Builder que unicamente va a correr bajo Windows te recomiendo siempre usar la API directamente y no funciones de C.

 :comp:  :ph34r: