Question

Je travaille actuellement avec le code « hérité » qui a (dispersés au hasard dans) toute une bande de directives du compilateur conditionnel basé sur la version de Delphi, remontant à Delphi 2. Désormais, tout développement sera avec Delphi 2009 ou future. Y at-il un outil de Delphi 2009, ou un plug-in, qui supprime automatiquement les segments de code conditionnel du compilateur basé sur une spécifié version « minimum »?

Était-ce utile?

La solution

Je recommande vivement le Delphi Inspiration Pascal préprocesseur (DIPP )

Cela peut faire un certain nombre de choses avec un fichier source en plus de retirer définitions conditionnelles, y compris la « inline » d'inclure des fichiers et la suppression des commentaires (tous bien sûr hautement configurable et contrôlable par les options fournies au processeur).

La fonctionnalité est particulièrement définitions conditionnelles utile que vous pouvez avoir tous ces conditionals simplement supprimé ou fournir un ensemble de DEFINE de que vous souhaitez appliquer. DIPP alors émettre un fichier source qui reflète la façon dont il semble le compilateur avec les symboles définis, mais sans les directives conditionnelles elles-mêmes.

Dans votre cas, vous simplement défini les symboles appropriés à votre « base » Delphi version.

Autres conseils

Vous devez donner JEDI PreProcessor (Pascal préprocesseur) dans le JCL une essayez.

Dans le coffre dans notre SVN la source se trouve dans le répertoire JCL / devtools / jpp et dans notre dernière version (2.1) fichier zip du jpp.exe se trouve dans le répertoire devtools.

Je ne sais pas d'un tel outil, mais il devrait être relativement simple à écrire.

  1. Boucle à travers tous les fichiers du répertoire à l'aide FindFirst et FindNext
  2. Utilisez TStringList.LoadFromFile pour lire tous les fichiers Pas.
  3. Boucle à travers les chaînes et rechercher des directives {$IfDef}. Si la version spécifiée dans la section conditionnelle est plus ancienne que D2009 supprimer tout le texte jusqu'à ce que le {$EndIf}.
  4. Utilisez TStringList.SaveToFile pour écrire le fichier modifié sur le disque.

Mon conseil serait seul code de changement que vous gérez complètement. Si toutefois vous allez également modifier le code existant 3ème partie, alors je vous suggère de passer par chaque IFDEF défini pour la validation. Certains fournisseurs n'utilisent pas les appels standard IFDEF VERxxx, mais créer leur propre qu'on pourrait appeler quelque chose comme VER70UP ou tel. L'endroit le plus commun pour ce serait inclure des fichiers, donc chercher un fichier {$ I ??? INC.} Près du début de chaque fichier, puis d'analyser cela pour ce qui est utilisé et comment.

L'autre raison d'analyser chaque $ define / $ FNUD est le fait qu'une version un spécifique peut activer une nouvelle définition que votre précédemment ne pas vérifier ... qui conduit en fin de compte dans le code mort.

Utilisez GExperts , vous pouvez utiliser les deux GrepSearch ou GrepRegularExpressions pour rechercher dans votre code puis utilisez REPLACE outil dans les GrepResults pour enlever tout ce que vous avez besoin.

  

Vous pouvez faire une recherche et remplacer   fonctionnement sur tous les matches de la   liste ou que le fichier sélectionné / match.   Lorsque vous choisissez une de ces options,   une boîte de dialogue apparaît demandant le   chaîne à utiliser à la place de la correspondance   texte. Notez que les formulaires qui sont   actuellement ouvert ne peut pas avoir leur texte   remplacé, en raison des limitations de la   IDE. S'il vous plaît fermer toutes les formes avant   en essayant de remplacer le texte en eux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top