Frage

Zur Zeit arbeite ich mit ‚geerbt‘ Code, der (verstreuten zufällig über) hat eine ganze Reihe von bedingter Compiler-Direktiven basierte auf der Version von Delphi, Delphi 2 zurück. Von nun an werden alle Entwicklung mit Delphi 2009 oder Zukunft. Gibt es ein Werkzeug in Delphi 2009, oder ein Plugin, das automatisch Compiler bedingte Codesegmente auf der Basis einer festgelegten ‚Mindest‘ Version entfernen wird?

War es hilfreich?

Lösung

Ich empfehle die Delphi Inspiration Pascal Preprocessor (DIPP )

Dies kann mit einer Quelldatei zusätzlich zu entfernen bedingten definiert eine Reihe von Dingen tun, darunter der „inlining“ Include-Dateien und Entfernen von Kommentaren (alle natürlich in hohem Maße konfigurierbar und steuerbar durch Optionen an den Prozessor geliefert).

Die bedingte definiert Funktion ist besonders nützlich, da Sie entweder alle solche conditionals einfach entfernt haben oder einen Satz von DEFINE die vorsehen, dass Sie sich bewerben möchten. DIPP wird dann eine Quelldatei emittiert, das zeigt, wie es an die Compiler mit diesen Symbolen DEFINIERT, aber ohne die bedingten Richtlinien erscheinen würde selbst.

Also in Ihrem Fall würden Sie einfach definiert die Symbole auf Ihre „Baseline“ Delphi-Version zu eigen.

Andere Tipps

Sie sollten geben JEDI PreProcessor (Pascal Preprocessor) in der JCL ein versuchen.

Im Kofferraum in unserem SVN kann die Quelle in dir gefunden wird jcl / devtools / JPP und in unserer neuesten Version (2.1) als zIP-Datei der jpp.exe in der Richt devtools gefunden werden.

Ich weiß nicht, von solch einem Werkzeug, aber es sollte relativ sein geradlinig, es zu schreiben.

  1. Schleife durch alle Dateien im Verzeichnis mit FindFirst und FindNext
  2. Verwenden Sie TStringList.LoadFromFile alle pas-Dateien zu lesen.
  3. Schleife durch die Saiten und suchen nach {$IfDef} Richtlinien. Wenn die Version in dem bedingten Abschnitt angegebene älter als D2009 ist entfernen die gesamten Text bis zum {$EndIf}.
  4. Verwenden Sie TStringList.SaveToFile die geänderte Datei auf die Festplatte zu schreiben.

Mein Rat an sich nur ändern, Code würde Sie vollständig zu verwalten. Wenn jedoch werden Sie auch 3rd-Party-Code ändern vorhandene, dann empfehle ich Ihnen jeden IFDEF durch für die Validierung definiert. Einige Anbieter nicht verwenden, um die Standard-IFDEF VERxxx Anrufe, aber ihre eigenen schaffen, die so etwas wie VER70UP oder so genannt werden könnte. Der häufigste Ort dafür wäre in Include-Dateien, so dass für eine {$ I ??? INC.} Datei am Anfang jeder Datei, dann ist diese für analysiert, was verwendet wird und wie.

Der andere Grund zu analysieren jede $ DEFINE / $ UNDEF ist die Tatsache, dass eine bestimmte Version eines auf einem neuen drehen könnte festlegen, dass Ihr vorher nicht überprüft ... eine, die letztlich führt in totem Code.

Verwenden Sie GExperts können Sie sowohl GrepSearch oder GrepRegularExpressions verwenden in Ihrem Code zu suchen und dann die Verwendung ersetzen Werkzeug in dem GrepResults zu entfernen, was Sie brauchen.

  

Sie können eine Suche und ersetzen   Betrieb auf alle Spiele in der   Liste oder nur die ausgewählte Datei / Spiel.   Wenn Sie wählen eine dieser Optionen,   erscheint ein Dialog für die Aufforderung   String anstelle des angepaßten zu verwenden   Text. Beachten Sie, dass Formen, die sind   aktuell geöffnetes kann nicht ihren Text haben   ersetzt, wegen der Beschränkungen in der   IDE. Bitte schließen Sie alle Formen vor   versuchen, Text in ihr zu ersetzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top