2009-04-22 11 views
6

J'ai un problème lors de la migration de Delphi 2006 vers Delphi 2009. Un projet qui utilise la JVCL se plaint de l'absence de jvconsts.res. Le fichier est définitivement là. Le chemin de recherche du projet inclut le répertoire dans lequel se trouve le fichier. (Note: Je n'ai pas JVCL dans mon chemin de recherche mondiale pour le rendre plus portable)Bug dans Delphi 2009? -> * .res introuvable dans le chemin de recherche du projet (fonctionne dans Delphi 2006)

Mais le fichier doit être trouvé, comme Delphi Help dit:

» ... les recherches de l'éditeur de liens pour .res fichiers [...] dans les répertoires spécifiés dans la zone d'entrée du chemin de recherche sur les répertoires/Conditions du projet | boîte de dialogue options »

Ce n'est pas un problème JVCL: a programme minimaliste montre ceci:

Imaginer cette structure de répertoire:

C:\Test\ResTest.dpr 
C:\Test\Res\Test.res 

Voici ResTest.dpr:

program ResTest; 

{$R test.res} // not found even if "c:\Test\Res" is in project search path 

begin 
end. 

Cette compile bien dans Delphi 2006 mais pas en 2009. Delphi Après quelques recherches, j'ai trouvé, d'une manière pour dire à Delphi où le fichier est: Le chemin de recherche gobal ou le paramètre -R en utilisant le compilateur de ligne de commande.

Comme je l'écris, je me rapproche du vrai problème: Dans Delphi 2006, le .cfg-fichier comprend les lignes:

-I"c:\Test\Res" 
-U"c:\Test\Res" 
-R"c:\Test\Res" 

Basicly copie les valeurs du chemin de recherche de projet dans la 3 commande options de ligne et donc il s'assure que le paramètre -R a les bonnes valeurs.

En Delphi 2009 (je mis la verbosité de la sortie du compilateur pour « debug ») j'obtenir la ligne de commande résultant de l'IDE:

Si le répertoire (c: \ Test \ Res) est inclus dans le chemin de recherche de projet:

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib" -R"c:\program files\codegear\rad studio\6.0\Lib" -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib" -K00400000 ResTest.dpr 

Si le répertoire est inclus dans le chemin de recherche globale

dcc32.exe --no-config -M -Q -ID:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -LE"C:\Users\Public\Documents\RAD Studio\6.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\6.0\Dcp" -O"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -UD:\Sources\Temp\1\Res;"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res -K00400000 ResTest.dpr 

Peut-être il est difficile de voir ici: la différence est le paramètre R:

Local Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib" 
Global Search Path -> -R"c:\program files\codegear\rad studio\6.0\Lib";D:\Sources\Temp\1\Res 

Il n'est donc pas étonnant que cela ne fonctionne pas. Le chemin de recherche local n'est pas ajouté au paramètre -R dans Delphi 2009.

Je dirais que c'est clairement un bug, mais pourquoi personne d'autre ne semble avoir ce problème? Je peux le reproduire sur toutes les machines que nous utilisons. Peut-être que l'erreur n'existe que dans la version allemande de Delphi 2009?

Répondre

2

Une solution est de mettre cela dans votre code à la place:

{$R res\test.res} 

qui fonctionne sur mon système avec Delphi 2009, à la fois avec l'IDE et le compilateur de ligne de commande.

Notez que je reconnais qu'ils ont enfreint les fonctionnalités existantes, avez-vous ajouté un rapport à Quality Portal? Si non, s'il vous plaît faire: ttps: //quality.embarcadero.com (c'était le moteur de recherche indexé http://qc.embarcadero.com mais qui a été fermé, https://quality.embarcadero.com nécessite un compte gratuit pour la recherche).

+0

Cela fonctionnerait avec notre code, mais je dois modifier le code tiers (JVCL) que j'aime vraiment éviter. –

+0

J'ai créé une entrée dans QualityCentral pour ce bogue # 73249 –

+2

Je suis d'accord avec le fait que vous ne voulez pas modifier le code d'un tiers. Thx pour le rapport. Je viens de vérifier http://qc.codegear.com/wc/qcmain.aspx?d=73249, modifié certains des champs du rapport, puis promu afin que l'équipe Q & A de CodeGear le verra dans leur système interne –

Questions connexes