2009-05-31 6 views
5

하나의 프레임 워크 라이브러리에서 다른 라이브러리로 일부 코드를 포팅하는 중입니다. 코드를 컴파일하기 위해 커다란 섹션을 주석 처리 한 다음 조심스럽게 복원해야합니다. 그 동안, 모든 주석 처리 된 코드로 인해 많은 경고가 나타납니다. Include 파일에서 현재 유닛의 이름을 가져 오는 방법이 있습니까?

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

내가 나에게 경고의 톤을 제공하는 모든 유닛이 포함되어 있지만, 지금은 컴파일 할 때, 컴파일러의 반환 메시지는 다음과 같습니다 : 그래서 쓰기 빠른을 억제하기 위해 파일을 포함하기로 결정

[DCC 경고] unfinished.inc (1) : 주석 처리 된 코드 unported 단위 억제 W1054 경고

나는 경고가 포함을하고있는 단위에서 오는 저를하지 얘기를하고 싶습니다 include 파일 자체. $ MESSAGE 지시문을 include 파일에서 실제로이 작업을 수행 한 모든 단일 유닛으로 이동하지 않고도이 작업을 수행하거나 메시지의 이름을 작업 할 수 있습니까?

답변

14

개인용 메서드가 포함 된 클래스가 포함 파일에 선언 된 경우에도 "사용되지 않은 개인 메서드"에 대한 컴파일러 힌트에 장치 이름이 포함되어 클래스가 선언된다는 사실을 사용하는 트릭입니다. .

이렇게하려면 포함 파일의 include-directive가 선언이 허용되는 곳에서으로 지정되어야합니다. 따라서 인터페이스 섹션의 uses 절 다음에 또는 구현 섹션의 uses 절 뒤에 있습니다.

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

을 지금, 당신은 파일 포함이 포함되어있는 모든 장치에 대한 다음과 같은 두 가지 메시지를 얻을 것이다 :

[DCC 경고]를

interface 

uses Foo, Bar, Socks; 

{$include Unfinished.inc} 

당신의 파일은 다음과 같아야 포함 unfinished.inc (1) : W1054 주석 처리되지 않은 코드에 대해 경고가 표시되지 않았습니다. 단위 이름은 다음 줄을 참조하십시오.
[DCC 힌트] actualunitname.pas (5) : 개인 기호 UnitWithSuppressedWar 왕은 선언되었지만 결코 사용되지 않았습니다.

실제 단위의 이름이 두 번째 줄에 나타납니다.

참고 : 컴파일러 힌트가 꺼져 있으면 두 번째 줄이 표시되지 않습니다.

+0

나는 그것을 좋아한다! 그것은 해킹의 비트지만, 내가 할 수없는 생각을 할 수있는 방법을 찾기 위해 관리하고 있습니다. –

+1

Genius, 내 대답을 삭제했습니다 :) –

+0

참으로 창조적입니다! –