Domanda

Al momento sto lavorando con il codice di 'ereditato' che ha (sparsi in modo casuale in tutta) tutta una serie di direttive del compilatore condizionali in base alla versione di Delphi, tornare a Delphi 2. Da ora in poi, ogni sviluppo sarà con Delphi 2009 o futuri. Esiste uno strumento in Delphi 2009, o un plugin, che rimuoverà automaticamente i segmenti di codice condizionali del compilatore sulla base di una versione specificata 'minima'?

È stato utile?

Soluzione

Consiglio vivamente il Delphi Inspiration Pascal preprocessore (DIPP )

Questo può fare un certo numero di cose con un file di origine oltre a rimuovere definisce condizionali, tra cui la "inlining" di includere i file e la rimozione di commenti (tutti ovviamente altamente configurabile e controllabile da opzioni fornite al processore).

La funzionalità definisce condizionale è particolarmente utile in quanto è possibile avere tutte queste condizionali semplicemente rimosso o fornire un insieme di DEFINE di che si desidera applicare. DIPP poi emette un file di origine che riflette quanto sembrerebbe al compilatore con quei simboli definiti, ma senza le direttive condizionali stessi.

Quindi nel tuo caso si dovrebbe semplicemente definito i simboli appropriati per la versione "base" Delphi.

Altri suggerimenti

Si dovrebbe dare JEDI PreProcessor (Pascal PreProcessor) nella JCL un provare.

Nel bagagliaio nel nostro SVN la fonte può essere trovato nella directory JCL / devtools / JPP e nella nostra ultima release (2.1) file zip il jpp.exe può essere trovato nelle DevTools dir.

Non so di un tale strumento, ma dovrebbe essere relativamente semplice e-forward per scriverlo.

  1. Loop attraverso tutti i file nella directory utilizzando FindFirst e FindNext
  2. Usa TStringList.LoadFromFile di leggere tutti i file pas.
  3. Loop attraverso le corde e cercare direttive {$IfDef}. Se la versione specificato nella sezione condizionale è più vecchio di D2009 rimuovere tutto il testo fino alla {$EndIf}.
  4. Usa TStringList.SaveToFile per scrivere il file modificato sul disco.

Il mio consiglio sarebbe quello di modificare solo il codice voi completamente gestire. Se invece siete anche andando a modificare il codice 3a parte esistente, allora vi suggerisco di andare attraverso ogni IFDEF definito per la convalida. Alcuni fornitori non utilizzano le chiamate standard IFDEF VERxxx, ma creare la propria, che potrebbe essere chiamato qualcosa come VER70UP o tali. Il luogo più comune per questo sarebbe in include i file, in modo da cercare un file {$ I ???. INC} vicino all'inizio di ogni file, quindi analizzare questo per ciò che viene utilizzato e in che modo.

L'altro motivo per analizzare ogni $ DEFINE / $ UNDEF è il fatto che una versione uno specifico potrebbe accendere una nuova definizione che la precedenza non controllare ... uno che alla fine porta in codice morto.

GExperts , è possibile utilizzare sia GrepSearch o GrepRegularExpressions per cercare nel codice e quindi utilizzare il Sostituisci strumento nelle GrepResults per rimuovere tutto ciò che serve.

  

Si può fare una ricerca e sostituzione   operazione su tutte le partite del   lista o solo il file / partita selezionato.   Quando si sceglie una di queste opzioni,   una finestra di dialogo in cui viene richiesto per la   stringa da utilizzare al posto del abbinato   testo. Si noti che le forme che sono   aperto non può avere il loro testo   sostituito, a causa delle limitazioni del   IDE. Si prega di chiudere tutte le forme prima   cercando di sostituire il testo in loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top