Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Guardar datos de versión de compilación (https://www.clubdelphi.com/foros/showthread.php?t=81799)

jotaeme 19-12-2012 12:13:24

Guardar datos de versión de compilación
 
Hola,

Mi problema es el siguiente: Para compilar un proyecto uso una variable de compilación(define) para cargar unos forms u otros, pero con el mismo nombre de ejecutable, y me gustaría saber con qué define lo he compilado.

Por ejemplo, la aplicación la puedo compilar con el define _MADRID, o bien con el define _BARCELONA, dependiendo del cliente al que vaya destinado, el ejecutable se llama igual 'Aplicacion.exe'. Pues me gustaría saber en cada ejecutable el define con el que lo he compilado, si _Madrid o _Barcelona, para no enviar a un cliente el ejecutable equivocado.

La solución que se me ha ocurrido es que al compilar se guarde en algún campo del VersionInfo el define que he usado, pero no sé como hacerlo.

Uso delphi 5.0, en versiones posteriores se pueden crear distintas configuraciones de compilación, sería otra solución, pero en delphi 5.0 no lo he visto esta opción.

Se os ocurre alguna solución?

Gracias.

Ñuño Martínez 19-12-2012 12:37:07

Podrías poner una firma, y asegurarte de que esta aparece en el ejecutable. Por ejemplo se me ocurre que añadas (si no tienes) una ventana "Acerca de..." que muestre información varia (correo de contacto y tal), y que en su módulo pongas algo como:
Código Delphi [-]
CONST
{$IFDEF _MADRID}
    ID = "Oficina Madrid";
{$ENDIF}
{$IFDEF _BARCELONA}
    ID = "Oficina Barcelona";
{$ENDIF}
Luego en el evento "onCreate" asignas esta constante al "Caption" de algún campo de la ventana (si no quieres que se muestre, pues lo ocultas). Así luego sólo tienes que mirar si existe una u otra cadena de texto en el ejecutable y ya lo tienes.

nlsgarcia 19-12-2012 15:01:59

jotaeme,

Cita:

Empezado por jotaeme
Me gustaría saber en cada ejecutable el define con el que lo he compilado, si _Madrid o _Barcelona, para no enviar a un cliente el ejecutable equivocado

Una alternativa sería:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
   SLApplication : TStringList;
begin
   SLApplication := TStringList.Create;
   {$IFDEF _MADRID}
      SLApplication.Add('Define _Madrid');
      SLApplication.SaveToFile('Application.txt');
   {$ENDIF}
   SLApplication.Free;
end
De igual forma se podría guardar en dicho archivo cualquier otra información de interés sobre la aplicación.

Espero sea útil :)

Nelson.

jotaeme 20-12-2012 12:13:49

Gracias por contestar tan pronto.

Lo de declarar un string constante puede ser una solución. Y lo del fichero auxiliar, aunque también es buena idea, no me sirve, porque tengo que poner el ejecutable en varios repositorios y el fichero txt se puede perder o se me puede olvidar subirlo y ya está el lio montado.

Lo dicho, Gracias.

nlsgarcia 20-12-2012 17:04:00

jotaeme,

Cita:

Empezado por jotaeme
Lo del fichero auxiliar, aunque también es buena idea, no me sirve, porque tengo que poner el ejecutable en varios repositorios y el fichero txt se puede perder o se me puede olvidar subirlo y ya está el lio montado

En la solución propuesta el archivo se crea automáticamente cada vez que la aplicación se ejecuta, si la aplicación es puesta por ejemplo en el repositorio Madrid, esta se debe ejecutar una primera vez para crear el archivo de control con la variable que identifica esta localidad y cualquier otro dato de interes. Para efectos visuales el archivo puede tener el mismo nombre del repositorio, lo cual facilitara su revisión y una paridad 1:1 entre el repositorio y la aplicación. Esta idea no excluye la Constante String con el nombre de la localidad, la complementa.

Espero sea útil :)

Nelson.


La franja horaria es GMT +2. Ahora son las 14:09:01.

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