2016-09-29 1 views
2

Dans Delphi 7 J'ai dans le « Outils/Options d'environnement/Library » sous mon « chemin Libray » le répertoire suivant:Fichier .pas non trouvé mais le .dcu est là, n'est-ce pas suffisant?

C:\ggProgramFiles\QR-synopse-pdf-files 

Dans là, j'ai quelques fichiers Pas et leurs fichiers DCU. L'un des fichiers ici est QRPDFSynFilt.pas et QRPDFSynFilt.dcu

Maintenant, mon problème est que puisque les fichiers pas sont disponibles là, je suis toujours dans eux pendant le débogage et je trouve cela ennuyeux.
Je fait un nouveau répertoire:

C:\ggProgramFiles\QR-synopse-pdf-files\dcu 

et copier uniquement les fichiers DCU là.
Puis j'ai modifié le chemin dans 'Tools/Environment options/Library' pour pointer vers ce nouveau répertoire.
Mais maintenant Delphi 7 me dit qu'il ne peut pas trouver

C:\ggProgramFiles\QR-synopse-pdf-files\dcu\QRPDFSynFilt.pas 

et c'est exact que la DCU est là.
Mais j'ai toujours cru que lorsque Delphi trouverait le fichier DCU qui serait suffisant, le fichier PAS ne serait pas nécessaire si la DCU est trouvée.

Donc, ma question est de savoir si Delphi a besoin du fichier PAS pour compiler ou si le DCU est suffisant et si ce dernier est vrai, qu'est-ce qui pourrait causer à Delphi de me donner cette erreur?

EDIT Deltics répondre

je pouvais utiliser la directive du compilateur {$ DebugInfo OFF} mais étant donné que ces unités sont parties je ne 3th voulu les modifier. Si rien d'autre ne marche, je le ferai toujours.

EDIT sur le commentaire Davids: l'erreur du compilateur est

[Fatal Error] File not found 'C:\ggProgramFiles\QR-synopse-pdf-files\dcu\QRPDFSynFilt.pas' 
+0

Il suffit de compiler les fichiers à dcus avec le débogage désactivé dans les options de votre ordinateur. Et puis fournir des fichiers au lieu de fichiers pas. Si c'est ce que tu veux. Je ne ferais pas ça mais c'est ton choix. –

+0

Je ne vois aucune description de l'erreur. Vous avez juste besoin de retirer les fichiers pas de vue. –

+0

@DavidHeffernan J'ai mis à jour la question avec l'erreur exacte que je reçois de Delphi quand j'arrête le compilateur de voir les fichiers pas – GuidoG

Répondre

4

Oui, si vous avez le dcu alors cela devrait être suffisant. Quelque chose d'autre ne va pas dans votre configuration. Cependant, au lieu d'essayer de corriger cela et d'introduire et d'essayer de gérer la complexité dans votre environnement de construction, je voudrais plutôt "résoudre le premier problème".

Au lieu d'essayer de tromper le compilateur, il suffit d'ajouter un {$debuginfo OFF} au-dessus de vous ne voulez jamais debug des pas fichiers:

{$debuginfo OFF} 

Ensuite, indépendamment des paramètres du compilateur du projet, ces unités ne seront jamais compilé avec les informations de débogage et le débogueur ne marchera pas dans eux. Pour réactiver le débogage, vous pouvez simplement ajouter un . à la directive après la { pour la transformer en un commentaire:

{.$debuginfo OFF} // This is now just a comment, not an active directive 

mise en évidence de syntaxe fera clairement la différence (en supposant que vous avez des commentaires et des directives configurées avec des couleurs différentes, etc. , qui est une bonne idée de toute façon).

Il peut être judicieux de mettre cette directive dans une directive de compilation conditionnelle afin que vous pouvez activer ou désactiver le débogage de ces unités spécifiques mais liées à un projet conditionnel:

{$ifdef debugQRPDF} 
    {$debuginfo ON} 
{$else} 
    {$debuginfo OFF} 
{$endif} 

Toutes les unités avec ce au top aura debug activé ou désactivé non pas par le réglage du compilateur de projet mais par les conditions du projet. Vous n'avez alors pas à vous soucier d'essayer de "cacher" les fichiers pas du compilateur juste pour éviter de les déboguer. N'oubliez pas que lors de la modification des paramètres du projet, tels que les directives conditionnelles, une reconstruction FULL est nécessaire pour que ces modifications soient reflétées correctement dans la génération.

+0

Je suis d'accord que quelque chose d'autre doit être faux. Je connaissais la directive du compilateur mais comme ils sont en 3ème partie je ne voulais pas éditer les fichiers pas, mais c'est peut-être mon seul choix. Je vais mettre à jour ma question avec cette info – GuidoG

+0

Vous n'avez pas besoin de changer les fichiers Pascal que vous avez juste besoin de compiler sans déboguer –

+0

@DavidHeffernan - mais alors l'OP ne peut pas déboguer ** n'importe quoi **, y compris le code qu'ils * font * souhaite déboguer. La seule façon de désactiver le débogage dans des fichiers spécifiques (indépendamment des paramètres du projet qui s'appliquent à tout) consiste à introduire des directives dans ces fichiers spécifiques (ou dans un fichier 'inc'lude commun, s'il y en a un commun à ces fichiers uniquement vous souhaitez ne pas déboguer) – Deltics

2

S'il s'agit d'une bibliothèque de composants tierce et que le fournisseur a fourni la source, vous pouvez ouvrir le package de conception et le recompiler avec les informations de débogage désactivées. Cela créera un nouveau dcus que le débogueur ne tentera pas de déboguer dans le fichier .pas associé. Vous trouverez ce paramètre dans les options du projet. Allez dans Compilateur Delphi -> Compiler -> Déboguer -> Informations de débogage. Changez le réglage sur OFF.

+0

oui je le sais mais cela n'explique toujours pas pourquoi je ne peux pas compiler quand je cache les fichiers pas et ne le laisse voir que les fichiers dcu – GuidoG

+0

Il ne suffit pas de mettre les fichiers dcu dans un autre répertoire. Le doit être recompilé avec les informations de débogage d'abord. Si les fichiers pas, le fichier dcu a été compilé à partir de références à un autre fichier .pas qui ne contient pas de dcus dans le répertoire, vous devez avoir les fichiers .pas disponibles lors de la compilation. – Tav

4

Vous avez probablement le fichier dans la liste des projets. Cela indique effectivement au compilateur que vous voulez le compiler. Vous devrez le supprimer de votre projet, mais laissez les références dans la clause uses de chaque unité qui le référence.

+0

Je suis sûr d'avoir vérifié cela mais c'est une bonne idée de le vérifier à nouveau. Je le ferai quand je serai de retour à mon bureau – GuidoG