(Delphi 7)
he acaba de intentar lo mismo. Tome un vistazo a la primera versión de código y en mis comentarios a continuación:
program Project1;
{$IFDEF TESTIFDEF}
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$ELSE}
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$ENDIF TESTIFDEF}
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
En ese momento, acabo de insertar el segundo formulario y se dio cuenta de que la unidad correspondiente (Unit2.pas) se insertó dentro de la primera parte del IFDEF, es decir, dentro de la parte etiquetada "TESTIFDEF" - por lo tanto, no anula el segundo bloque (después del {$ ELSE}).
lo tanto su solución debe ser:
- definen una declaración IFDEF como "{$ IFDEF DELPHIBASISCONFIGURATION}" en lugar de mi "{$ IFDEF TESTIFDEF}" en el que se añaden todas las formas.
- definen tantas ETIQUETAS alternativas para las diferentes configuraciones con las que desea trabajar.
- cada vez que ha agregado un formulario al proyecto, copie la línea insertada del primer bloque en los bloques correspondientes a continuación - según sus necesidades ...
- active la configuración requerida utilizando la instrucción define o la opción
de diálogo
- NUNCA definen "DELPHIBASISCONFIGURATION";)
Por lo tanto, debe tener este aspecto:
program Project1;
{$DEFINE MYCONFIG1} // THIS ONE IS NOW ACTIVE
{$IFDEF DELPHIBASISCONFIGURATION}
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};
{$ELSE}
// THIS IS A "COMMON TO ALL CONFIG" PART
uses
Forms,
// FIRST CONFIGURATION
{$IFDEF MYCONFIG1}
Unit1 in 'Unit1.pas' {Form1},
Unit3 in 'Unit3.pas' {Form3}
{$ENDIF MYCONFIG1}
// SECOND CONFIGURATION
{$IFDEF MYCONFIG2}
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2}
{$ENDIF MYCONFIG2}
// THIS IS THE "COMMON TO ALL CONFIG" END :)
;
{$ENDIF TESTIFDEF}
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
//Application.CreateForm(TForm3, Form3);
//Application.CreateForm(TForm2, Form2);
Application.Run;
end.
como se puede ver, he descartado las llamadas a Appli cation.CreateForm (...) para Form2 y Form3.
en mi humilde opinión, por lo general es mejor crear dinámicamente las formas complementarias en el momento en que realmente los necesite es decir, no todas las formas de inicio del programa ...
Podría explicar por qué sólo _sometimes_ desea una unidad para ser un miembro de su proyecto? No entiendo el propósito. –
En nuestro proyecto usamos el FastMM que viene con Delphi para compilaciones de versiones, pero el FastMM4.pas externo para compilaciones de depuración. Así que tenemos un IFDEF alrededor "usa FastMM4;" –
@Ulrich: uso FastMM4 para las compilaciones DEBUG y RELEASE, ¿por qué no? Es parte del repositorio SVN del proyecto, y obtengo el mismo entorno independientemente de la versión del compilador. ¿Que es no gustar? – mghie