Hola a tod@s
Yo lo resolvia creandome una variable global, asignarla la ruta del ejecutable y guardandola en un ".ini" dentro del directorio de trabajo del programa para leerla de nuevo (en el "Create" del form) cada vez que corro el programa
[code_delphi]
var
Form1 : TForm;
DIR_TRABAJO : string;
// global al proyecto
...
procedure TWin_Main.Form_OnCreate(Sender: TObject);
var
FileIni : TFileIni;
tmpRuta : string;
begin
tmpRuta := GetCurrentDir;
fileIni := TFileIni.Create( tmpRuta + '\parametros.ini' );
DIR_TRABAJO := fileIni.ReadString( 'DBF', 'DIR_TRABAJO', '' );
if( Trim(DIR_TRABAJO)='' )
then begin
{ crear el nuevo directorio de trabajo } fileIni.WriteString( 'DBF', DIR_TRABAJO, tmpRuta+'\DBF' );
DIR_TRABAJO := tmpRuta+'\DBF';
end;
fileIni.Free;
ForceDirectories( DIR_TRABAJO );
// forzar el directorio por si se cambia la ruta
...
end;
[/code_delphi]