software - Delphi agrega{$ R*.res} en el archivo.dpr
delphi technologies (7)
Depende de qué más haya hecho con el archivo .dpr. Delphi espera que el archivo se distribuya de cierta manera, y si lo ha modificado de tal manera que los analizadores IDE internos no pueden encontrar correctamente ciertas cosas, puede adivinar incorrectamente. Originalmente, el archivo .dpr nunca fue pensado para que el usuario lo modifique a voluntad, por lo que puede confundirse. IFDEFS son los culpables más comunes que pueden confundir al analizador IDE.
Delphi a veces agrega {$ R * .res} al frente de la ruta de la unidad en el archivo .dpr usa cláusulas, luego aparece una advertencia de recursos duplicados al intentar compilar.
¿Alguien sabe por qué demonios Delphi hace eso? Estoy usando Delphi 2009, pero esto sucede desde Delphi 2007 (tal vez 2006 también)
Es muy molesto, ocurre sin razones obvias y no se puede evitar que ocurra, hasta donde sé :(
Tal vez publicar su .dpr ayudaría a ilustrar su problema. Mis archivos de proyecto se ven así y no me dan problema:
program Example;
{$R *.res}
uses
Unit1 in ''Unit1.pas'' {frmUnit1};
begin
Application.Initialize;
Application.CreateForm(TfrmUnit1, frmUnit1);
Application.Run;
end.
He adquirido algunas "heurísticas" para lidiar con el hecho de que el IDE entra en conflicto con el dpr:
- No hay código "complicado" en el bloque principal de inicio y final (es decir, cosas con variables o si :-)). Todo lo que necesito hacer allí se intercambia en rutinas separadas. Esto parece hacer que el analizador IDE sea más feliz.
- Si necesito $ IFDEFs en la cláusula uses, hago una "unidad proxy" que contiene las unidades $ IFDEFed y la pongo en la cláusula uses de dpr.
Delphi agrega {$ R * .res} a su archivo .dpr para vincular el archivo .res que genera en su aplicación. Por ejemplo, si guarda su proyecto como MyProject.dpr, Delphi creará un archivo MyProject.res que contiene el icono de su aplicación y la información de la versión que especifique en las Opciones del proyecto en Delphi. Sin este archivo .res, su .exe no tendrá un icono o información de versión.
Si recibe una advertencia de recurso duplicado, probablemente tenga otra directiva de compilación {$ R} en otro lugar de su código que también tenga enlaces en MyProject.res. Podría ser un duplicado {$ R * .res} en su archivo .dpr, o un {$ R MyProject.res} en otro archivo .pas. Elimine la otra directiva del compilador en lugar de la que Delphi genera automáticamente, y su proyecto compilará muy bien.
El problema por el que Delphi te agrega estos textos "incorrectos" {$ R} y {$ R * .res} está oculto en el archivo DPROJ. Simplemente abra el archivo DPROJ con un editor de texto y busque los $ R * .res y elimine estas etiquetas:
<DCCReference Include="../../../Core/IF.Common/uTranslation.Types.pas">
<Form>$R *.res</Form>
</DCCReference>
Cambiar eso a
<DCCReference Include="../../../Core/IF.Common/uTranslation.Types.pas"/>
Ahora no obtendrá el texto defectuoso en su proyecto (hasta la próxima vez que IDE no lo agregue al archivo DPROJ).
el valor predeterminado {$ R * .res} en .dpr debe estar entre usos y cláusulas var.
a veces los archivos del proyecto se corrompen ...
simplemente elimine cualquier archivo en su directorio de origen, excepto * .dpr, * .pas, * .dfm
Delphi reconstruirá otros archivos, incluido * .res
Eso es