문제

현재 Delphi 2로 돌아가는 Delphi의 버전을 기반으로 한 조건부 컴파일러 지시문을 전체적으로 (무작위로 산란) '상속 된'코드로 작업하고 있습니다. 이제부터 모든 개발은 Delphi 2009 또는 Future에서 진행될 것입니다. Delphi 2009 또는 플러그인에 지정된 '최소'버전을 기반으로 컴파일러 조건부 코드 세그먼트를 자동으로 제거하는 플러그인이 있습니까?

도움이 되었습니까?

해결책

나는 강력히 추천한다 Delphi Inspiration Pascal Preprocessor (DIPP)

이는 포함 파일의 "인라인"을 포함하여 조건부 정의를 제거하고 주석을 제거하는 것을 포함하여 조건부 정의를 제거하는 것 외에도 소스 파일을 사용하여 여러 가지 작업을 수행 할 수 있습니다 (물론 프로세서에 제공되는 옵션으로 구성 가능하고 제어 할 수 있음).

조건부 정의 기능은 기능이 특히 조건부를 간단하게 제거하거나 적용하려는 정의 세트를 제공 할 수 있으므로 특히 유용합니다. 그런 다음 DIPP는 정의 된 기호로 컴파일러에 어떻게 보이는지를 반영하는 소스 파일을 방출합니다.

따라서 귀하의 경우 "기준"델파이 버전에 적합한 기호를 간단히 정의했습니다.

다른 팁

Jedi Preprocessor (Pascal Preprocessor)를 JCL 시도.

우리 SVN의 트렁크에서 소스는 DIR에서 찾을 수 있습니다. JCL/DEVTOOLS/JPP 그리고 우리의 최신 릴리스 (2.1) Zip-File에서 jpp.exe는 Dir Devtools에서 찾을 수 있습니다.

나는 그러한 도구를 모르지만 그것을 쓰는 것은 비교적 직선적이어야합니다.

  1. 사용하는 디렉토리의 모든 파일을 반복합니다 FindFirst 그리고 FindNext
  2. 사용 TStringList.LoadFromFile 모든 PAS 파일을 읽으려면.
  3. 줄을 통과하고 찾아보십시오 {$IfDef} 지침. 조건부 섹션에 지정된 버전이 D2009보다 오래된 경우 {$EndIf}.
  4. 사용 TStringList.SaveToFile 수정 된 파일을 디스크에 작성합니다.

제 조언은 당신이 완전히 관리하는 코드 만 변경하는 것입니다. 그러나 기존 제 3 자 코드를 수정하려면 유효성 검사를 위해 정의 된 각 IFDEF를 살펴 보는 것이 좋습니다. 일부 공급 업체는 표준 IFDEF VERXXX 호출을 사용하지 않지만 Ver70UP 등이라고 할 수있는 자체를 만듭니다. 이것의 가장 일반적인 장소는 파일을 포함하므로 각 파일의 시작 부분 근처에 {$ i ???. inc} 파일을 찾은 다음 사용중인 내용과 방법에 대해 분석하십시오.

각 $ define/$ undef를 분석하는 또 다른 이유는 버전 특정 버전이 이전에 확인하지 않은 새로운 정의를 켜질 수 있다는 사실입니다.

사용 gexperts, 당신은 grepsearch 또는 grepregularexpressions를 모두 사용하여 코드에서 검색 한 다음 Grepresults의 교체 도구를 사용하여 필요한 것을 제거 할 수 있습니다.

목록의 모든 일치 또는 선택한 파일/매치에서만 검색 및 교체 작업을 수행 할 수 있습니다. 해당 옵션 중 하나를 선택하면 문자열이 일치하는 텍스트 대신 사용하도록하는 대화 상자가 나타납니다. 현재 열려있는 양식은 IDE의 제한으로 인해 텍스트를 교체 할 수 없습니다. 텍스트를 교체하기 전에 모든 양식을 닫으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top