Gibt es eine Möglichkeit die aktuellen Einheit der Namen von einer Include-Datei zu bekommen?

StackOverflow https://stackoverflow.com/questions/932638

Frage

Ich bin einigen Code von einer Framework-Bibliothek zu einem anderen zu portieren, die mich erfordert nur große Teile des Codes auf Kommentar, um es zu kompilieren und sie dann sorgfältig wieder herzustellen. In der Zwischenzeit ich Tonnen von Warnungen wegen all der kommentierten-out-Code. Also beschloss ich, eine schnell zu schreiben Include-Datei, sie zu unterdrücken:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'}
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

I enthalten diese in allen Einheiten, die mich Tonnen Warnungen geben, aber jetzt, wenn ich kompilieren, Rückkehr der Compiler die Meldung wie folgt:

[DCC Warning] unfinished.inc (1): W1054 Warnungen für unported Einheit mit kommentierten Code-out unterdrückt

Ich mag es mir sagen, dass die Warnung aus dem Gerät kommt, um den darunter zu tun, nicht enthält die Datei selbst. Gibt es eine Möglichkeit, das zu tun, oder den Namen der Einheit in die Nachricht zu arbeiten, ohne tatsächlich den $ MESSAGE Direktive aus der Include-Datei zu bewegen und in jede einzelne Einheit, wo ich das getan?

War es hilfreich?

Lösung

Hier ist ein Trick, was die Tatsache nutzt, dass der Compiler Hinweis für „nicht verwendete private Methoden“ den Namen der Einheit enthält, wird die Klasse deklariert in, auch wenn die Klasse mit der privaten Methode in einer Datei enthalten deklariert wird.

Dies erfordert, dass die Include-Direktive für die Datei enthält in einem Teil der Einheit erscheint, wo Erklärungen erlaubt , also entweder nach der uses-Klausel im interface-Abschnitt oder nach der uses-Klausel die Umsetzung Abschnitt.

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}

Ihre Include-Datei sollte wie folgt aussehen:

{$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}

Nun, sehen Sie die folgenden zwei Nachrichten für jede Einheit erhalten, die diese Datei enthalten enthält:

  

[DCC Warning] unfinished.inc (1): W1054 Warnungen für unported Einheit mit kommentierten-out-Code unterdrückt, Gerätename nächste Zeile
sehen   [DCC Tipp] actualunitname.pas (5). Das private Symbol UnitWithSuppressedWarnings erklärt wurde, aber nie benutzt

Beachten Sie, dass der Name der aktuellen Einheit erscheint in der zweiten Zeile.

Hinweis: Sie werden nicht in der zweiten Zeile sehen, wenn Compiler Hinweise ausgeschaltet sind

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