2009-08-10 5 views
1

J'ai un package d'exécution partagé que j'utilise pour prendre en charge une application qui utilise des packages en tant que système de plug-in. J'ai inclus plusieurs unités tierces dans le package partagé afin de réduire le nombre de BPL à distribuer. Delphi semble avoir des maux de tête avec cette configuration, mettant à jour occasionnellement seulement le fichier DCP dans la zone "DCP partagé" (C: \ Utilisateurs \ Public \ Documents \ RAD Studio \ 6.0 \ Dcp sur ma machine) et non celui du répertoire de sortie DCP (comme spécifié dans les options du projet).Empêcher l'IDE de modifier la clause "requires" d'un package

Ce n'est pas mon principal problème mais ... Mon principal problème est que Delphi lance cette boîte de dialogue assez souvent:

Delphi Change Package Dialog

(ce qui est juste un exemple, il arrive pour d'autres paquets que je J'ai aussi installé)

Maintenant, dans Delphi 2009, au moins lorsque j'annule cette boîte de dialogue (et cliquez sur oui dans la boîte de dialogue suivante), cela ne change rien. Les versions précédentes continueraient à utiliser mon fichier dpk.

Je n'arrive pas à ouvrir la boîte de dialogue damnée. Le paquet est défini comme un paquet d'exécution, il n'a pas de paquet "required" (autre que ceux de la VCL). Je pensais l'avoir léché il y a un mois, mais il a recommencé à monter.

Aucune modification n'a été apportée au fichier DPK ou au fichier DPROJ.

Je sais pourquoi c'est le cas ... Delphi essaie de garder ce paquet cohérent en interne avec les autres paquets de l'IDE, juste au cas où je l'installerais. Je voudrais arrêter l'IDE en faisant cela.

Quelqu'un a-t-il des suggestions?

N @

+0

Désolé pour le retard dans la vérification des réponses, j'ai été dans un théâtre brandissant des lumières pour les deux derniers jours! – Nat

Répondre

4

Vous devez faire référence explicitement chacune des unités mentionnées dans la boîte de dialogue dans la section contient du fichier DPK. La boîte de dialogue affiche uniquement les unités qui sont implicitement (= non répertorié dans contient) inclus et suggère nécessitant le paquetage à l'origine.

+0

+1. En outre, recherchez les pointeurs pour éviter cela dans cette réponse: http://stackoverflow.com/questions/1215664/is-implicitly-imported-always-a-bad-thing-in-delphi-packages/1216131#1216131 –

+0

Merci Uwe! Donc, fondamentalement, si un paquet qui contient l'une des unités n'est pas * explicitement * requis, il faudra le paquet ... au lieu de vous donner une liste des unités implicitement liées (comme c'est le cas) normalement). – Nat

+0

Je pense que les unités sont également implicitement liées en premier lieu, mais il est suggéré d'exiger ces paquets.Si vous cliquez sur OK, c'est fait. –

2

Si Delphi nécessite ce paquet, c'est parce que vous utilisez des unités qui ne sont pas dans le paquet lui-même ou dans les paquetages requis. Par ailleurs, si Delphi vous demande d'utiliser ce paquet, c'est parce que Delphi "connaît" un paquet avec ces unités dont vous avez besoin et que vous ne déclarez pas, le paquet sera également compilé avec ces unités "implicitement" importées. Cela pourrait produire une application incohérente si vous travaillez avec des paquets. Rappelez-vous qu'une unité ne peut être chargée qu'une seule fois dans une application.

Questions connexes