Delphi에는 C와 유사한 사전 컴파일된 명령어도 있습니다. 이러한 유형의 명령어는 현재 단일 파일에서만 유효하지만(작성자가 이러한 유형의 명령어의 실제 사용법을 완전히 이해하지 못할 수도 있음), 이러한 유형의 명령어는 지침은 다중 버전 컴파일에 유용합니다(예: 표준 버전에서 학습 버전 게시).
하나. 지침 소개:
1. 정의 지시어:
형식: {$DEFINE 이름}
설명: 현재 단위에서 유효한 기호(Symbol)를 정의하는 데 사용됩니다. 한정된
그런 다음 IF DEF 및 IFNDEF 명령어를 사용하여 기호가 존재하는지 확인할 수 있습니다.
2. UNDEF 명령:
형식: {$UNDEF 이름}
설명 : 현재 단위에 정의되어 있는 기호(Symbol)를 취소하는데 사용됩니다. 이 지시어와 DEFINE
함께 사용됩니다.
3. IFDEF 지시어:
형식: {$IFDEF 이름}
참고: 이 지시어 뒤의 이름이 정의된 경우 이 지시어 뒤의 {$ELSE} 또는 {$ENDIF}까지의 코드 세그먼트가 컴파일됩니다.
4. IFNDEF 지시어:
형식: {$IFNDEF 이름}
참고: 이 지시어 뒤의 이름이 정의되지 않은 경우 이 지시어 뒤의 {$ELSE} 또는 {$ENDIF}까지의 코드 세그먼트가 컴파일됩니다.
5. IFOPT 명령:
형식: {$IFOPT 스위치}
참고: 이 명령어 뒤의 스위치가 설정된 경우 이 명령어 뒤의 {$ELSE} 또는 {$ENDIF}까지의 코드 세그먼트가 컴파일됩니다.
예: {$IFOPT R+}
Writeln('컴파일 시 범위 확인 스위치를 켭니다.');
{$ENDIF}
6. ELSE 명령:
형식: {$ELSE}
설명: 접두사 Ifxxx의 조건식을 판단하여 명령어와 {$ENDIF} 사이의 코드 세그먼트를 컴파일할지 무시할지 결정합니다.
7. ENDIF 지시어:
형식: {$ENDIF}
설명: Ifxxx와 협력하여 조건부 사전 컴파일된 세그먼트의 소스 코드 세그먼트 끝 위치를 나타냅니다.
둘. 예:
다양한 컴파일 기호를 미리 정의하여 코드 세그먼트 없이 컴파일 작업을 수행하는 예제를 작성합니다.
1. 새로운 델파이 프로젝트를 생성하고 Unit1 유닛 형태에 Button 버튼을 추가합니다.
2. 다음과 같이 프로그램을 작성합니다.
단위 Unit1;
인터페이스
용도
Windows, 메시지, SysUtils, 클래스, 그래픽, 컨트롤, 양식, 대화 상자,
StdCtrls;
유형
TForm1 = 클래스(TForm)
버튼1: T버튼;
PRocedure FormCreate(Sender: TObject);
절차 Button1Click(Sender: TObject);
사적인
{비공개 선언}
공공의
{공개 선언}
a : 문자열;
끝;
var
Form1: TForm1;
구현
{$R *.DFM}
{$DEFINE AAA} // 정의 라인.
절차 TForm1.FormCreate(Sender: TObject);
시작하다
a := '기타';
{$IFDEF AAA}
a := 'AAA';
{$ENDIF}
{$IFDEF BBB}
a := 'BBB';
{$ENDIF}
끝;
절차 TForm1.Button1Click(Sender: TObject);
시작하다
캡션 :=a;
끝;
끝.
{참고: 굵은 글씨는 입력한 코드입니다.}
3. 컴파일하고 실행한 후 Button을 누르면 폼의 제목 표시줄에 "AAA"가 표시됩니다. 프로그램은 a := 'AAA' 명령문을 컴파일합니다.
4. 라인을 정의하는 프로그램 세그먼트를 변경합니다.
으로 변경되었을 때
{$ 정의 BBB}
컴파일하고 다시 실행하면 폼의 제목 표시줄에 "BBB"가 표시되는 것을 볼 수 있습니다. 프로그램은 a := 'BBB' 명령문을 컴파일합니다.
행 정의를 취소하거나 행을 변경할 때
{$아무 것도 정의하지 않음}
또는 다른 이름으로 컴파일하고 다시 실행하면 양식의 제목 표시줄에 "Other"가 표시됩니다. 프로그램은 a := 'Other' 문만 컴파일합니다.
삼. 버전을 빠르게 생성하고 변경하는 방법:
사전 컴파일 지침을 사용하면 동일한 프로그램의 여러 버전을 만들 때 각 버전에서 서로 다른 단위를 찾고, 통합 버전 기호(Symbols)를 순서대로 정의한 다음 조건부 사전 컴파일 지침을 프로그램 세그먼트에 추가하기만 하면 됩니다. 실제 컴파일 중에 다양한 프로그램 부분을 컴파일합니다. 이는 프로그램 표준화(통합 버전 기호 정의) 및 기밀성(다른 버전이 다른 프로그램 부분을 컴파일)에 좋은 영향을 미칩니다.
하지만 이런 종류의 미리 컴파일된 지시문은 현재 유닛에만 작용할 수 있기 때문에 공통 유닛에서 버전 기호를 한 번 정의할 수 없고 각 유닛마다 통일된 버전 기호를 정의해야 한다는 불편함이 있다. 각 버전의 정확성을 보장하려면 모든 버전 기호가 변경되었는지 확인해야 합니다. 이를 위해 Delphi IDE의 "찾기" 기능을 사용할 수 있습니다. 파일..."(여러 파일의 문자열 검색) 기능을 사용하여 버전 기호를 정의하는 모든 파일과 위치를 찾은 다음 순서대로 변경하여 모든 위치가 수정되었는지 확인합니다.