C'è qualche modo per ottenere l'attuale nome dell'unità da un file di inclusione?
-
06-09-2019 - |
Domanda
Sto porting di un po ' di codice da un quadro libreria all'altra, che mi richiede di commento, di grandi sezioni di codice per farlo compilare, e poi ripristinare con attenzione di loro.Nel frattempo, ricevo tonnellate di avvisi a causa di tutte le commentato codice.Così ho deciso di scrivere un breve file di inclusione per sopprimerli:
{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'}
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}
Ho incluso in tutte le unità che mi tonnellate di avvisi, ma ora, quando ho compilazione, il compilatore di restituire il seguente messaggio:
[DCC Avviso] incompiuta.inc(1):W1054 Avvertenze soppressa per unported unità commentato codice
Mi piacerebbe che mi dicono che l'avviso è venuta dall'unità facendo l'compreso, non includi il file stesso.C'è qualche modo per farlo, o al lavoro, il nome dell'unità in un messaggio, senza effettivamente spostare il $MESSAGGIO direttiva fuori del file di inclusione e in ogni singola unità in cui ho fatto questo?
Soluzione
Qui è un trucco, che utilizza il fatto che il compilatore suggerimento per "inutilizzati metodi privati" contiene il nome dell'unità, la classe è dichiarata, anche se la classe con il metodo privato è dichiarata in un file di inclusione.
Questo richiede che la include-direttiva per il tuo file di inclusione appare in una parte dell'unità, dove le dichiarazioni sono ammessi, così dopo la clausola uses la sezione di interfaccia o dopo la clausola uses della sezione attuazione.
interface
uses Foo, Bar, Socks;
{$include Unfinished.inc}
Include file dovrebbe essere simile a questo:
{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code, Unit name see next line'}
type
TUnit_With_Suppressed_Warnings = class
private
procedure UnitWithSuppressedWarnings; virtual; abstract;
end;
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}
Ora, si ottengono i seguenti due messaggi, uno per ogni unità che include che includono file:
[DCC Avviso] incompiuta.inc(1):W1054 Avvertenze soppressa per unported unità commentato codice, nome di Unità di vedere la prossima linea
[DCC Suggerimento] actualunitname.pas(5):Il simbolo privato UnitWithSuppressedWarnings è stata dichiarata ma mai utilizzato.
Si noti che il nome effettivo dell'unità viene visualizzato nella seconda riga.
Osservazione:Non vedere la seconda linea, se compilatore suggerimenti sono spenti.