이 글에서는 프로그래밍 과정에서 참고할 수 있도록 델파이에서 일반적으로 사용되는 다양한 키워드의 이름과 사용법을 자세히 소개합니다. 세부사항은 다음과 같습니다:
순수한:
//새 변수를 생성할 수 있으며, 변수의 시작 주소는 다른 변수와 동일합니다.var Str: string[32]: ByteabsoluteStr;//이 선언은 StrLen 변수의 시작 주소를 지정합니다. and Str Same.//문자열의 0번째 위치는 문자열의 길이를 저장하므로 StrLen의 값은 문자열의 길이입니다.beginStr := 'abc';Edit1.Text := IntToStr(StrLen);end;
추상적인:
//추상 클래스라는 추상 메서드가 있는 클래스를 포함하여 추상 메서드를 만들 수 있습니다. //추상 메서드는 재정의되어야 하기 때문에 추상 메서드는 가상 또는 동적 키워드와 함께 사용해야 합니다. //추상 클래스는 인스턴스화할 수 없으며 추상 메서드는 사용할 수 없습니다. 메소드 본문을 포함합니다. = 클래스 개인 보호 프로시저 X; 공개 생성자 소멸;
그리고:
//1. (a>0) 및 (b>0)인 경우 논리 AND를 표현합니다. //2. 표현 비트 연산 vara,b,c: Integer;beginc := (a 및 b);end;//And 사용 논리를 표현할 때 조건 충돌을 피하기 위해 And 주변의 표현식을 괄호로 묶어야 합니다.//예: if a>0 및 b>0 then//컴파일러는 다음과 같이 이해할 수 있습니다. if a>( 0 and b) >0 then//or:if (a>0) and (b>0) then//그러나 실제로 컴파일할 때 컴파일러는 충돌을 일으키고 오류를 보고합니다.//그리고 첫 번째는 a>b>c 형식을 포함할 수 있습니다. Delphi는 지원하지 않습니다.//따라서 And 연산자를 사용할 때는 왼쪽과 오른쪽 조건을 구분하기 위해 괄호를 사용해야 합니다.//비트 연산을 표현할 때 And와 왼쪽 및 오른쪽 매개변수를 묶는 괄호도 추가해야 합니다.
정렬:
//배열은 배열을 나타내는 데 사용되며, 배열은 정적 배열과 동적 배열의 두 가지 유형으로 구분됩니다. //정적 배열 varArr1: 정수 배열 [1..10];//동적 배열 , 선언 당시에는 요소의 개수를 알 수 없으므로 나중에 SetLength 메소드를 사용하여 배열의 크기를 설정해야 합니다. varArr2: array of Integer;//배열을 매개변수로 사용하는 경우 배열을 전달할 수 없습니다. 배열 이름만 전달한 다음 Length 메소드를 사용하여 배열 함수 X(A: array of Integer): Integer;vari: Integer;beginResult := 0;for i := 0의 요소 수를 가져올 수 있습니다. 길이(A)-1 doResult := Result + A[i];end;
처럼:
//As는 한 개체를 다른 개체로 변환하는 데 사용됩니다. 프로시저 BtnClick(Sender:TObject);begin (Sender as TButton).Caption := 'Clicked';end;//객체 채우기 인터페이스를 변환하려면 As가 되어야 합니다. (HTTPRIO as IExp).GetConnection;//데이터 유형 변환에 사용할 수 없으므로 다음 코드는 잘못되었습니다. vari: Integer;s: string;begins := (i as string);end;//올바른 작성 방법은 다음과 같습니다: s := string(i);
asm:
//Asm 키워드는 어셈블리 코드를 삽입하는 데 사용됩니다. 어셈블리 코드를 사용할 때는 Begin...end;function IntToHex(Value: Integer; Digits: Integer) 대신 asm...end; 구조를 사용해야 합니다. asm CMP EDX, 32 JBE @A1 xor EDX, EDX @A1: PUSH ESI MOV ESI, ESP SUB ESP, 32 PUSH ECX MOV ECX, 16 CALL CvtInt MOV EDX, ESI POP EAX CALL System.@LStrFromPCharLen ADD ESP, 32 POP ESIend;
어셈블러:
//Assembler 키워드는 80386 등 초기 어셈블리를 지원하는 데 사용됩니다. //Asm과의 차이점: Asm은 Win32 어셈블리를 허용하는 반면 Assembler는 80x86 어셈블리만 허용하고 IntToHex 함수를 허용하지 않습니다. (AValue: Int64): 문자열;
자동화:
//자동 액세스 지정자는 자동으로 입력된 멤버를 설명하는 데 사용되며, 이를 통해 프로그램 버전이 이전 버전과 호환될 수 있습니다. //ComObj 유닛의 멤버 및 해당 인스턴스는 자동 액세스 지정자를 사용할 수 없습니다.type TDemo = class automatic Str:WideString end; //다음 버전의 프로그램에서는 Str이 수정되어 typeTDemo = classautomatedStr: AnsiString;end가 됩니다.//Str 변수의 새 버전은 이전 버전의 WideString 유형 데이터를 허용할 수 있습니다. 그리고 자동으로 AnsiString으로 변환됩니다.//실제 개발시 특별한 필요가 없다면 자동 접근 구분자는 일반적으로 사용하지 않습니다.
시작하다:
//begin 키워드는 프로그램이나 구조의 시작을 나타내는 데 사용되며 end 키워드로 끝나야 합니다. 프로시저 i:=1에 대한 구조의 시작 지점을 표시하려면 start 키워드를 사용해야 합니다. 100 dobeginsum := sum + i; sum > 1000이면 Break;end;
사례:
//Case 문은 조건 선택을 완료하는 데 사용됩니다. Case 문의 선택된 개체는 정수형, 열거형, 문자형 등을 포함하는 순서형이어야 합니다. //일치하는 항목이 없으면 Case 문을 끝까지 종료해야 합니다. 선택 항목, 일반 선택을 위해 추가할 수 있음 function GetDays(AYear,AMonth: Integer): 정수; 시작 케이스 AMonth of 1,3,5,7,8,10,12: Result := 31; 4,6,9,11: 결과 := 30; 2: IsLeapYear(AYear) 시작:=29 else 결과:=0;end;
cdecl:
//Cdecl은 C 또는 C++로 작성된 DLL에서 함수를 호출할 때 따라야 하는 규칙을 규정한 일종의 함수 호출 규약입니다. //C 또는 C++의 데이터 유형을 Delphi로 변환할 수 있습니다.//예를 들어 코드 C++: int X(int i){ return i*2;}//이 함수는 Demo.dll에서 컴파일됩니다. Delphi로 호출할 때는 다음 함수를 사용해야 합니다. '데모.dll';수업:
//Class 키워드는 클래스를 선언하거나 상속하는 데 사용되며, 클래스와 인터페이스를 동시에 상속할 수도 있습니다. //또한 Class 키워드를 사용하여 클래스의 공통 메서드를 선언할 수도 있습니다. 상위 클래스는 클래스 내에서 하위 클래스의 메서드에 액세스할 수 있습니다. .type ClassDemo = class(TObject) private public constructor Create;//클래스를 사용하여 메서드를 선언하면 클래스 및 관련 클래스에서 해당 메서드를 사용할 수 있습니다. 예: typeClassA = classprivatepublicprocedure Y;end;typeClassB = class(ClassA)privatepublicclass 프로시저 메소드를 호출합니다.
const:
//Const 키워드는 상수를 선언하는 데 사용됩니다. const를 사용하여 선언된 데이터는 프로그램에서 변경할 수 없습니다. //함수 매개변수를 선언하는 데에도 사용할 수 있습니다. const MyFileName은 함수 내에서 변경할 수 없습니다. = 'Delphi';const MyInteger = 100;//Const로 상수를 선언할 때 해당 데이터 유형을 표시할 필요가 없습니다. 시스템이 자동으로 유형을 결정하고 자동 조정합니다.//const를 사용하여 변경할 수 없도록 선언할 수 있습니다. 함수의 매개변수 function X(const i: 정수): 문자열;//이때 함수 연산 중에는 i 값을 변경할 수 없습니다.
건설자:
//생성자 키워드는 클래스의 생성자를 선언하는 데 사용됩니다. //생성자는 일반적으로 Create로 표시됩니다. class.type ClassDemo = class( TObject) private fValue: Integer; public constructor Create; end;constructor ClassDemo.Create;beginfValue := 0;end;
다음을 포함합니다:
//Contains 키워드는 패키지(Package)에 특정 파일이 포함되어 있는지 여부를 나타냅니다. //Contains로 도입된 파일은 패키지 파일에 추가되어야 하며, 이를 통해 패키지 DATAX에는 rtl, clx가 필요합니다. Db, DBLocal, DBXpress;end를 포함합니다.
기본:
//Default 키워드는 속성의 기본값을 나타내는 데 사용됩니다. //순서가 지정된 유형 속성만 기본값의 존재를 허용합니다. 그렇지 않으면 속성 값이 생성자에서 초기화되어야 합니다. type ClassDemo = class private fValue: Integer Property Value; : 정수 읽기 fValue 쓰기 fValue 기본값 0;//클래스 속성의 기본 속성을 가리킬 수도 있습니다. strings[Index: Integer]: string read GetString write PutString Default;
오물 소각로:
//소멸자는 클래스가 해제될 때 자동으로 호출되는 소멸자를 식별하는 데 사용됩니다. //소멸자는 덮어쓰기만 허용되며, 소멸자는 일반적으로 Destroy를 함수 이름으로 사용합니다. class( TComponent) public destroy;override; end;//TComponent 클래스에도 Destroy 메소드가 있으므로 다시 작성해야 합니다. //그러나 소멸자를 오버로드하려는 경우에는 허용되지 않습니다. : 소멸자 과부하;
dispid:
//DispId 키워드는 DispInterface 인터페이스에서 특정 적응 일련 번호를 지정하는 데 사용됩니다. //DispInterface 인터페이스에서 적응 일련 번호는 고유해야 합니다. //DispId가 지정되지 않으면 시스템이 자동으로 적응을 할당합니다. 일련 번호는 인터페이스의 각 메서드에 제공됩니다. //적응 일련 번호를 통해 DispInterface 인터페이스의 메서드에 액세스할 수 있습니다. IStringsDisp = dispinterface ['{EE05DFE2-5549-11D0-9EA9-0020AF3D82DA}'] 속성 ControlDefault[Index: Integer]: Olevariant dispid 0; 함수 개수: Integer; 속성 Item[Index: Integer]: Olevariant dispid 2; Remove(색인: 정수); dispid 3; 4; 함수 추가(항목: Olevariant): 정수 5; 함수 _NewEnum: IUnknown -4;디스플레이 인터페이스:
//DispInterface는 특정 어댑터 인터페이스를 선언하는 데 사용됩니다. 이 어댑터는 표준 시스템 인터페이스에서 들어오고 나가는 데이터를 받아들일 수 있습니다. //DispInterface로 선언된 인터페이스는 상속될 수 없으며 //DispInterface의 메서드는 참조만 가능합니다. 호출되고 동적으로 바인딩되어야 합니다. //DispId를 사용하여 인터페이스에 적응 일련 번호를 할당할 수 있습니다. //DispInterface는 Windows 플랫폼에서만 사용할 수 있습니다. 그러면 이 키워드는 시스템에 의해 자동으로 차단됩니다. //일반적으로 DispInterface는 사용되지 않습니다. //예제는 DispId를 참조하세요.
사업부:
//Div는 두 숫자의 정수 몫을 찾는 데 사용됩니다. Div 연산에 사용되는 두 값은 모두 정수여야 하며 연산 결과도 정수입니다. var a, b, c: Integer; := 20; b := 3; c := a div b;
하다:
//Do 키워드는 For, While, On, With 문에서 특정 구조를 형성하는 데 사용됩니다. //For 문: for i := 1 to 100 do sum:=sum+i;//While 문: while i < 100 dobegin sum := sum + i; Inc(i);end;//On 문(예외 처리):try i := StrToInt(s);예외 do ShowMessage('Error!');end;//With 진술:함께 Memo1.Lines dobegin Clear; Append('abc');end;아래:
//DownTo 키워드는 For 문에서 루프 변수가 감소됨을 나타내는 데 사용됩니다. for i := 100 downto 1 doListBox1.Items.Add(IntToStr(i));//For 문에서는 To 키워드가 사용됩니다. 루프 변수를 증가시키려면 DownTo 키워드를 사용하여 감소시킵니다.
동적:
//Dynamic은 동적 메서드를 선언하는 데 사용됩니다. //동적 메서드는 재정의될 수 있으며 코드 크기를 최대한 줄일 수 있습니다(Virtual과 다름).procedure X(i: Integer) Dynamic;
또 다른:
//else는 프로그램의 실행 방향을 안내하는 데 사용됩니다. If, Case 및 On 문과 함께 사용할 수 있습니다. 조건이 충족되지 않으면 //If 문에서 실행됩니다. , else 앞에는 어떤 점도 허용되지 않습니다. No.):if a > b thenc := aelsec:=b;//Case 문: case 태그 Of1:Result:=1;2:Result:=2;3:Result:=3;elseResult:=0;end;//On 문(예외 처리):tryi := StrToInt(s);Excpeton EZeroDivide do 결과: = 1;EOverflow에서 do Result := 2;elseResult := 0;end;
끝:
//End는 명령문 블록이나 유닛을 끝내는 데 사용됩니다. //begin, Case, Class, Interface, Asm, Unit, Package 등과 일치할 수 있습니다. //명령문 블록(로컬 끝)의 경우 End를 뒤에 추가해야 합니다. 세미콜론.//단위 또는 패키지(전역 끝)의 경우 끝 뒤에 마침표를 추가해야 합니다.//If 문의 else 키워드 앞에는 기호가 허용되지 않습니다. 그 다음에 Button1.Caption := 'Hinted' else Button1.Caption := '힌트되지 않음'; end;end;//패키지에서 End를 사용하여 종료: package DATAX;requiresrtl,clx;contains Db, DBLocal, DBXpress;end.
제외하고:
//Exception 처리를 위해 사용되는 키워드로 try 문에서 사용해야 합니다. 예외가 발생하면 Except 이후의 명령문이 실행됩니다. try i := StrToInt(s);out ShowMessage('Error!');end;내보내다:
//Export는 함수를 내보낼 수 있음을 나타내는 함수 호출 프로토콜을 나타내며, 내보낸 함수는 로컬 또는 원격으로 호출할 수 있습니다. //다른 프로그램은 dll 형식으로 프로그램 내 함수를 호출할 수 있습니다. Add( a,b: Integer): Integer;export;//이 프로그램이 Demo.exe로 컴파일되고 다른 프로그램이 이 함수를 호출해야 하는 경우 다음 명령문 function Add(a,b: Integer)을 사용할 수 있습니다. 정수; 외부 호출; '데모.exe';
수출:
//exports는 객체를 출력하는 데 사용됩니다. 인터페이스와 구현 사이에 사용해야 합니다. libraryDemo;function X(i: Integer): string; :=IntToStr(i);end;내보내기 X(i: 정수): 문자열; stdcall;begin Result := IntToStr(i);end;function X(s: string): 정수; stdcall;begin Result := StrToInt(s);end;exportsX (i: 정수) 이름 'x1',X(s: 문자열) 이름 'x2';시작.
외부:
//External 키워드는 OBJ 내에서 외부 또는 메소드를 참조하는 데 사용됩니다.{$L Demo.OBJ}procedure X(i:Integer);external;//dll 또는 외부 프로그램에서 참조하는 경우 사용할 수 있습니다. 다음 코드: function A(FileName: string): string; external 'Demo.dll';//참조된 함수가 오버로드된 경우 참조된 이름을 추가로 지정해야 합니다. function A(Name: string): string; stdcall; external 'Demo.dll' name 'A1'; function A(Code: Integer): string; external 'Demo.dll' name 'A2';//External 키워드를 사용할 때는 주의해야 합니다. 그렇지 않으면 오류가 발생합니다.멀리:
//Far는 함수를 원격으로 호출할 수 있음을 나타냅니다. //다른 프로그램이 dll 형식으로 함수를 호출할 수 있습니다. functionAdd(a,b: Integer): Integer; Far ;//이 프로그램이 Demo.exe로 컴파일되고 다른 컴퓨터의 다른 프로그램이 이 함수를 호출해야 하는 경우 다음 문을 사용할 수 있습니다. function Add(a,b: Integer): Integer external; '데모.exe';
파일:
//File 키워드는 파일 작업 유형을 나타냅니다. 파일은 File로 선언되어야 합니다. //File 뒤에 Of와 파일 유형이 추가되면 해당 파일은 지정된 유형의 데이터를 읽고 쓰도록 정의할 수 있습니다.type TPerson = Record PName: 문자열[ 32]; Page: Integer; end;var PFile: TPerson의 파일;
마무리:
//최종화 키워드는 유닛이 해제될 때 호출되는 메소드를 식별합니다. //보통 자동으로 해제할 수 없는 유닛의 객체를 해제합니다. //가장 일반적으로 사용되는 최종화 사례는 다음과 같습니다. -OLE 개체 초기화. ActiveX.OleInitialize(nil);최종화 ActiveX.OleUninitialize;
마지막으로:
// finally 키워드는 예외 처리에서 호출해야 하는 마지막 메서드를 나타냅니다. //예외 발생 여부에 관계없이 finally 이후의 문은 항상 try Node := Node.GetNext; .Text := Node.Text;마지막으로 Node := nil;end;
을 위한:
//For 키워드는 지정된 수의 루프를 수행하는 데 사용되는 For 루프 구조로 연결됩니다. for i := 1 to 100 dosum := sum + i;//루프 변수가 감소하면 다음을 사용할 수 있습니다. i에 대한 DownTo 키워드: = 100 downto 1 do Inc(sum);
앞으로:
//Forward 키워드는 메소드 선언만 정의하고 나중에 프로그램에서 메소드를 구현하는 데 사용됩니다. //이는 코드의 가독성에 도움이 되며 모든 선언을 하나로 묶을 수 있습니다. 모든 구현을 하나로 묶습니다. function X(i: Integer): Integer;forward;procedure Y(s: string);forward;...function X;begin Result := i * 2;end;procedure Y;beginWriteLn(s);end;//Forward 미리 선언된 메서드는 구현 시 메서드의 매개변수와 반환 값을 입력할 필요가 없으며 메서드 이름을 직접 사용하면 됩니다.
기능:
//함수는 함수를 선언하는 데 사용됩니다. 함수 이름의 경우 매개변수와 반환 유형만 표시하면 됩니다. 구체적인 함수 이름은 나중에 바인딩할 수 있습니다.
고토:
//Goto 문은 현재 구조 레이어의 어떤 위치로든 이동할 수 있는 줄 번호로 점프하는 데 사용됩니다. //선언에서 label 키워드를 사용하여 줄 번호를 선언해야 합니다. //Goto 문은 삭제됩니다. .var a,b: Integer;label X,Y;begin if a > b then goto X else goto Y;X: WriteLn('a > b'); Y: WriteLn('b > a');end;만약에:
//If 키워드는 조건을 판단하는 데 사용되는 If 조건문으로 연결됩니다.var a,b: Integer;begin a := 2; if a>b then WriteLn('a=' + IntToStr( a )) else WriteLn('b=' + IntToStr(b));end;//If 문의 일반적인 구조는 If...Then...else이고 else 문은 선택 사항입니다.//If 거기에 있는 경우 If 문 여러 하위 문 중 하나입니다. 그런 다음 start...End 구조를 사용하여 a > b thenbegin WriteLn('a=' + IntToStr(a)); b) );Endelse WriteLn('b>a');구현:
//구현은 유닛의 구현 부분을 식별합니다. 유닛의 기본 구조는 //Unit...Interface...implementation...end입니다.//함수 본문, 프로세스 본문 등은 뒤에 작성해야 합니다. 구현 키워드./ /구현 후 객체가 참조되는 경우 객체는 비공개이며 유닛 자체에서만 사용할 수 있습니다. 구현에서는 frmAbout;begin FormAbout.Show;end;//완전한 유닛에 구현이 있어야 합니다. 부분.
구현:
//Implements는 인터페이스에서 속성이 상속되고 해당 속성이 인터페이스 개체로 변환됨을 나타냅니다. //인터페이스를 통해 속성을 동적으로 바인딩하고 속성 값을 동적으로 설정합니다. end; TMyImplclass = 클래스 프로시저 P2; end; TMyclass = class(TInterfacedObject, IMyInterface) FMyImplClass: TMyImplClass: TMyImplclass 읽기 FMyImplclass는 IMyInterface를 구현합니다. 프로시저 IMyInterface.P1 = MyP1; 프로시저 MyP1; end;//구현을 통해 선언한 후 위의 예와 같이 클래스가 선언될 때 인터페이스에서 메서드의 엔터티를 지정할 수 있습니다. P1 = 내P1;
안에:
//In은 세트에 요소가 포함되어 있는지 확인하는 데 사용됩니다. 결정될 콘텐츠는 단일 세트 요소와 세트의 인스턴스여야 합니다. type TCol = (cA,cB,cC); Cols: TCols;begin Cols := [cA,cB]; if cA in Cols then ShowMessage('cA in Cols') else ShowMessage('cA not in Cols');end;//In은 프로젝트 파일에도 사용됩니다. 프로젝트에서 파일을 참조하는지 여부를 식별하는 데 사용됩니다. //In은 컬렉션의 요소를 루프아웃하는 데 사용할 수 있습니다. .. for sl에서는 ShowMessage(s)를 시작합니다. end;색인:
//인덱스는 동일한 속성 메소드(Get, Set)를 사용하여 다른 속성을 조작할 수 있도록 속성의 일련 번호를 식별하는 데 사용됩니다. type TForm1 = class(TForm) private function GetInfo(const Index: Integer): Longint ; 프로시저 SetInfo(const 인덱스: Integer; const 값: Longint); 공용 속성 iLeft:Longint 인덱스 0 읽기 GetInfo 쓰기 SetInfo 속성 iTop:Longint 인덱스 1 읽기 GetInfo 쓰기 SetInfo; 속성 iWidth:Longint 인덱스 2 읽기 GetInfo 쓰기 SetInfo; 속성 읽기 GetInfo 쓰기 SetInfo; end;function TForm1.GetInfo(const Index: Integer): Longint;begin 케이스 인덱스 0: self.Left; 1: 결과 := self.Top; 2: 결과 := self.Width; := self.Height; end;end;//Index 키워드는 속성의 여러 요소를 나타내는 데에도 사용됩니다. 예: property Selected[Index: Integer]: Boolean read GetSelected write SetSelected;
상속됨:
//상속됨은 상위 클래스의 메소드를 호출하는 데 사용됩니다.type TDemo = class(TComponent) public constructor Create(AOwner: TComponent); override; ; //자신과 동일한 이름을 가진 메소드를 호출하는 경우 메소드 이름과 매개변수를 생략할 수도 있습니다. 예를 들어 위의 예에서는 상속됩니다. Create(AOwner);//다음으로 변경 가능:상속됨;
초기화:
//초기화 키워드는 유닛이 로드될 때 호출되는 메소드를 식별합니다. //보통 자동으로 초기화할 수 없는 일부 객체를 초기화하는 데 사용되지만, //사용할 필요는 없습니다. 초기화는 OLE 개체를 초기화하는 것입니다. OleInitialize(nil);finalization ActiveX.OleUninitialize;
인라인:
//InLine 키워드는 Asm 또는 어셈블러 구조에서 사용됩니다. //어셈블리 문이 하위 호환임을 나타내는 데 사용됩니다. function IntToStr(Value: Integer): string; asm 인라인 PUSH ESI MOV ESI, ESP SUB ESP, 16 xor ECX, ECX PUSH EDX xor EDX, EDX CALL CvtInt MOV EDX, ESI POP EAX CALL System.@LStrFromPCharLen ADD ESP, 16 POP ESIend;
인터페이스:
//인터페이스는 유닛의 인터페이스 부분을 식별합니다. 유닛의 기본 구조는 //Unit...Interface...implementation...end입니다.//함수, 프로시저 등의 선언은 반드시 유닛 뒤에 작성되어야 합니다. 인터페이스 키워드./ /인터페이스 다음에 객체가 참조되는 경우 객체에는 인스턴스가 없으며 사용 시 인스턴스화되어야 합니다. 인터페이스는 frmAbout;var FAbout: TFormAbout;begin FAbout := TFormAbout.Create(Self); FAbout.Show;end;//완전한 유닛에는 인터페이스 부분이 있어야 합니다.//인터페이스는 인터페이스의 선언으로 사용될 수도 있습니다.type IMalloc = 인터페이스(IInterface) ['{00000002-0000-0000-C000-000000000046 }'] function Alloc(크기: 정수): 포인터; function Realloc(P: 포인터; 크기: 정수): stdcall; stdcall; function GetSize(P: 포인터): 정수; stdcall;이다:
//Is 키워드는 객체 판단에 사용됩니다. 경우에 따라 "As"로도 사용할 수 있습니다.var Comp: TComponent;begin ... if Comp Is TEdit then (Comp as TEdit).Text := 'Edit' ;끝;
상표:
//label 키워드는 Goto를 조정에 사용할 수 있도록 행 번호 레이블을 선언하는 데 사용됩니다. 사용하는 것은 권장되지 않습니다.var a,b: Integer;label X,Y;begin if a > b then goto X else goto Y;X: WriteLn( 'a>b');Y: WriteLn('b>a');end;도서관:
//Library 키워드는 프로젝트가 클래스 라이브러리임을 나타내는 데 사용됩니다. 클래스 라이브러리는 다른 프로그램에서 호출할 수 있는 DLL 파일을 생성합니다. 이름 완료, InsertText 이름 삽입, 삭제 선택 이름 삭제, FormatSelection, PrintSelection 이름 인쇄, SetErrorHandler;begin InitLibrary;end.
메시지:
//Message 키워드는 메시지 메소드를 선언하는 데 사용됩니다. //Message가 포함된 메소드는 수신된 메시지 유형을 표시해야 하며 처리를 위해 메시지를 메소드에 전달해야 합니다. Refresh(var Msg: TMessageRecordtype) 절차; Refresh(var Msg: TMessageRecordtype);beginif Chr(Msg.Code) = #13 then...elseinherited;end;//사용자가 메시지를 사용자 정의할 수 있습니다. 사용자 정의 메시지는 메시지 및 트리거 이벤트를 통해 수신될 수도 있습니다.
모드:
//Mod는 두 숫자의 정수 모듈러스, 즉 나머지를 찾는 데 사용됩니다. Mod 연산에 사용되는 두 값은 모두 정수여야 하며 연산 결과도 var a여야 합니다. , b, c: 정수; 시작 a := 20; b := 3; = a mod b;
이름:
//Name 키워드는 메소드의 별칭을 나타내는 데 사용됩니다. //메소드를 외부에서 참조하려면 외부 프로그램이 메소드의 엔터티 내용을 변경하지 못하도록 Name을 사용하여 메소드 별칭을 적용하는 것이 좋습니다. //외부에서 메소드를 참조할 때 메소드에 별명이 있으면 이름으로 식별해야 합니다. function MessageBox(HWnd: Integer; Text, Caption: PChar; Flags: Integer): Integer; .dll' 이름 'MessageBoxA';
가까운:
//Near는 함수 호출 프로토콜을 표시하며, 이는 함수가 로컬에서 호출될 수 있음을 나타냅니다. //다른 프로그램은 dll 형식으로 프로그램의 함수를 호출할 수 있습니다. function Add(a,b: Integer): Integer. ; Near;//이 프로그램이 Demo.exe로 컴파일되고 다른 로컬 프로그램이 이 함수를 호출해야 하는 경우 다음 명령문을 사용할 수 있습니다. function Add(a,b: Integer): Integer external; '데모.exe';
무:
//Nil은 Null 포인터 또는 인스턴스가 없는 객체를 나타내는 데 사용됩니다. Node <> nil dobegin ListBox1.Items.Add(Node.Text) Node := Node.GetNext;end;
기본값 없음:
//NoDefault 키워드는 속성이 일반적으로 상속에 사용되는 기본값을 허용하지 않음을 나타냅니다. type TClassA = class private fValue: Integer;Published property Value: Integer read fValue write TClassB = class( TClassA ) 게시된 속성 Value:Integer read fValue write fValue nodefault end;//위의 예에서 볼 수 있듯이 TClassA의 Value는 기본값이 0입니다. //TClassB는 TClassA를 상속하므로 기본값도 상속합니다. 여기서 기본값을 제거하려면 NoDefault를 사용하세요.
아니다:
//Not은 부정에 사용되며 원래 결과를 부정합니다. 예를 들어: if a > b then//다음과 같이 쓸 수 있습니다: if not (a < b) then//Not 키워드는 일반적으로 부울 값을 전환하는 데 사용됩니다. 속성 프로시저 Button1Click (Sender: TObject);begin StatusBar1.Visible := Not StatusBar1.Visible;end;
물체:
//객체는 객체를 선언하는 데 사용됩니다. 이 객체는 임의적일 수 있으며 이전 버전과 호환됩니다. //객체 선언 방법은 클래스 선언 방법과 동일합니다. object end; ODemoB = object(ODemoA) end;//Object 키워드는 동적 함수나 프로시저를 선언하는 데에도 사용됩니다. type TMyFun = function(i: Integer): Integer of Object = Procedure(s: string; ) 의 object;//object에 의해 선언된 함수 또는 프로시저는 지정된 함수 본문에 동적으로 바인딩되거나 제어 이벤트에 바인딩될 수 있습니다.
의:
//Of 키는 다른 키워드와 함께 지정된 구조를 형성하는 데 사용됩니다. Of는 Case, Class, Array, File, Set, Object와 함께 사용할 수 있습니다. //Case 문: Case Tag Of 0: Result := 'a'; : Result := 'b';end;//클래스 문: type TDemo = 클래스 of TComponent;//배열 구조: var MyInt: 정수 배열;//파일 구조: var MyFile: 파일 Byte;//Set 문: type TCol = (cA,cB,cC); TCols = TCol 집합;//Object 구조: type MyFun = function(I: Integer): Integer of Object;
에:
//On 키워드는 발생한 예외를 지적하고 예외 정보를 얻는 데 사용됩니다. try i := StrToInt(s);out on E: 예외 do ShowMessage(E.Message);end;
또는:
//1. 논리 또는 if (a>0) 또는 (b>0) 표현 //2. 표현 비트 연산 vara,b,c: Integer;beginc := (a 또는 b);end;//Or 사용 논리를 표현할 때 조건과의 충돌을 피하기 위해 Or 주변의 표현식을 괄호로 묶어야 합니다. //조건문에 Or를 사용하면 편집자는 사용자가 Or로 무엇을 하는지 알 수 없습니다. 예: if a>0 or b>0 then//컴파일러는 다음과 같이 이해할 수 있습니다: if a>(0 또는 b)>0 then//또는 if (a>0) 또는 (b>0) then//그러나 실제로 컴파일할 때 컴파일러는 충돌을 생성합니다. , 오류 보고 //그리고 첫 번째에는 Delphi에서 지원되지 않는 a>b>c 형식이 포함될 수 있습니다. //따라서 왼쪽과 오른쪽 조건을 구별하기 위해 Or 연산자를 사용할 때 괄호를 사용해야 합니다.//비트를 나타냅니다. 연산을 수행할 때는 괄호도 추가해야 합니다. Or와 왼쪽 및 오른쪽 매개변수를 묶습니다.
밖으로:
//Out 키워드는 메소드 매개변수의 출력 방법을 설명합니다. //Out은 함수에서 여러 결과를 반환하는 데 사용됩니다. //Out은 값을 반환합니다. 는 매개변수를 반환하며, var는 프로시저에 직접 입력된 매개변수의 주소입니다. TForm1.Button1Click(Sender: TObject);var i: Integer; s: string;begin i := 20; s := 'xxx';
초과 적재:
//Overload 키워드는 오버로딩에 사용되는 메서드를 나타냅니다. 즉, 메서드 이름은 동일하지만 //매개변수의 개수, 유형 또는 순서가 다른 경우에는 오버로드 함수 X(를 구성합니다. i: 정수): 문자열;overload;function 오버로딩 요구 사항이 충족되어야 합니다.type TDemo = class(TComponent) public Procedure CreateWnd(AOwner: TWinControl);overload; end;//위의 예에서와 같이 하위 클래스가 소유하는 메서드는 다음과 같습니다. Procedure CreateWnd; {서브클래스 선언 }//CreateWnd 메소드는 2개가 있습니다.//오버로딩을 사용하지 않는 경우에는 상위 클래스의 메소드를 서브클래스에서 오버라이드할 수 있습니다.보수:
//Override는 Virtual 또는 Dynamic 형태의 메소드를 오버라이드하는 데 사용됩니다. //오버라이드 시에는 오버라이드된 메소드의 선언을 사용해야 하며, 원래 메소드의 매개변수 및 반환 유형은 수정할 수 없습니다. Create(AOwner: TComponent); override;/ /Override는 상위 클래스 메서드를 재정의하기 위해 주로 사용됩니다. type TClassB = class(TClassA) override; //위의 예와 같이, 하위 클래스가 소유한 메서드는 다음과 같습니다. 프로시저 X; {상위 클래스에서 재정의됨}//상위 클래스가 소유한 메서드는 프로시저 명령문입니다. //또는 매개변수를 수정해야 하는 경우 다음으로 재정의해야 합니다. 키워드를 다시 소개합니다.패키지:
//패키지 키워드는 프로젝트가 컨트롤 라이브러리임을 나타내는 데 사용됩니다. //컨트롤 라이브러리는 컴파일 후 BPL 파일을 생성하며, 이 파일은 향후 개발 패키지 DATAX에서 사용할 수 있도록 델파이 컨트롤 라이브러리에 설치할 수 있습니다. ; rtl, clx가 필요합니다. 'C:/MyProject/MyUnit.pas';end에 MyUnit이 포함되어 있습니다.
포장:
//Packed 키워드는 구조 레코드 또는 배열을 패킹하는 데 사용됩니다. type TPerson = Packed Record PName: Page: Integer end; PChar;
파스칼:
//파스칼은 함수 호출 프로토콜을 표시하고, //함수가 호출 시 파스칼을 따른다는 점을 지적합니다. 즉, 모든 변수를 먼저 초기화하고, //비동기 스레드 호출로 인한 오류를 방지합니다. 함수 X(i: 정수입니다. ): 정수; 파스칼;시작 결과 := i * 2;끝;
사적인:
//Private은 클래스 내 요소의 액세스 차별화 권한을 나타냅니다. Private로 구분된 요소는 이 클래스 내에서만 액세스할 수 있습니다.
절차:
//프로시저는 프로시저를 선언하는 데 사용됩니다. 프로시저 매개변수만 지적하면 나중에 특정 프로시저 이름을 바인딩할 수 있습니다.
프로그램:
//Program 키워드는 프로젝트가 애플리케이션임을 나타내는 데 사용됩니다. 컨트롤 라이브러리가 컴파일된 후 exe 파일이 생성되며, 프로그램을 직접 실행할 수 있습니다. Project1;uses Forms, Unit1 in 'Unit1.pas';{$R *.res}시작 Application.Initialize ; Application.CreateForm(TForm1, Form1);end.재산:
// 속성은 속성을 선언하는 데 사용됩니다 : 통합; 게시 된 속성 : 정수 읽기 FValue; (발신자 : tdemo);
보호 :
// 보호 된 클래스 내에서 요소의 액세스 권한은이 클래스와 하위 클래스 내에서만 액세스 할 수 있습니다.
공공의:
// 대중이 구별하는 요소의 액세스 차별화 권한은 클래스 내 및 클래스 외부의 모든 객체에 의해 액세스 할 수 있음을 나타냅니다.
게시됨:
// 클래스 내에서 구별 된 요소의 액세스 권한은 클래스 내 및 클래스 외부의 모든 RTTI 객체에 의해 액세스 할 수 있습니다. 객체 뷰어.
들어올리다:
// RAING 문은 예외를 제외하고 예외를 통해 예외를 처리하거나 예외가 발생하면 rAING 문장을 사용할 수 있습니다. : string; i <0이면 시작한 다음 예외를 올리십시오. strtoint (s); e를 제외하고 : 예외는 예외를 제기합니다.
읽다:
// 개인 FValue를 읽는 데 사용되는 멤버 또는 메소드를 식별하는 데 사용됩니다.
Readonly :
// ReadOnly 키워드는 객체가 read 전용인지 식별하는 데 사용됩니다 .PropertyReadOnly; // ReadOnly가 True로 설정되면 사용자는 수동으로 속성을 수정할 수 없으며 다른 객체를 통해서만 작동 할 수 있습니다.
기록:
// 레코드 키워드는 구조 레코드를 선언하는 데 사용됩니다. // 구조는 인스턴스화 할 필요가없고 멤버가있는 객체로 간주됩니다 ; 끝 ;
등록하다:
// 기능이 호출 될 때 레지스트리에서 레코드를 남길 수 있음을 나타냅니다 제어 라이브러리 또는 IDE.Procedure Register; RegisterComponents 시작 ( 'Sample', [tdemo]); END;
다시 소개 :
// 다시 쓰기 방법이 정적 메소드이거나 메소드의 매개 변수를 수정 해야하는 경우 다시 게시하려면 다시 게시해야합니다. 가상 또는 동적 방법을 사용하여 TCLASSA를 사용하여 클래스 x; 정수);
반복하다:
// 반복 된 루프 구조를 소개하는 데 사용됩니다 합 : = sum + i; INC (i);
다음이 필요합니다:
// Keyword는 필요한 조건을 충족하지 않으면 패키지를 컴파일 할 수 없습니다.
리소스 스트링 :
// 리소스 문자열은 .RSORCESTRING CREATERROR를 사용합니다.
Safecall :
// SafeCall은 COM이 호출하는 함수가 따라야하며 규칙을 따라야 할 때 SAFECALL에서 선언 한 함수가 .procedure x (s : widestring); Safecall; // 컴파일 후 : 절차 X (S : Pansistring);
세트:
// 세트 키워드는 세트 클래스를 선언하는 데 사용되며 설정 클래스는 수집 연산자와 같은 수집 연산자와 함께 작동 할 수 있습니다. 컬렉션 요소 var color를 추가하거나 삭제하자 색상 + [CA, CB];
SHL :
// SHL은 왼쪽으로 이동하는 것을 의미하며, 왼쪽 이동의 수는 var x : = 2 shl 3;
SHR :
// SHR은 오른쪽으로 이동하는 것을 의미하며, 오른쪽 시프트의 수는 2 var X의 전력으로 나뉩니다.
stdcall :
// STDCALL은 프로그램이 호출 할 수있는 함수를 지정합니다 : 정수 : stdcall; 정수 : 정수;
저장됨:
// 저장된 것은 속성의 값을 유지할 수 있는지 여부를 지적하는 데 사용됩니다.
끈:
// String은 문자열을 나타내는 데이터 유형입니다 .Var str : String;
그 다음에:
// 키워드는 조건이 설정되면, a> b writel ( 'b')을 시작합니다 ;
스레드 바르 :
// ThreadVar가 변수를 선언하는 경우 다음 스레드로 생성 된 변수를 식별합니다. s : = ''; // s : = '';
에게:
// for 문의 키워드로, 사이클 변수가 증가하고 있음을 나타냅니다.
노력하다:
// 비정상적인 처리에 사용됩니다 ;
유형:
// 유형의 키워드는 다양한 객체를 선언하는 데 사용되며 유형 키워드의 객체가 전달되면 참조를 전달합니다. 변수. 타입 TCOL = (CA, CB, CC);
단위:
// 단위의 시작은 단위 ... end.Unit Units1; 시작.
undil :
// 키워드가 반복되는 순환 조건을 결정할 때까지 //주기를 종료하십시오 I; INC (I);
용도:
// 사용은 외부 장치를 인용하는 데 사용되며 장치의 공개 부분을 사용할 수 있습니다 .//uses 문은 일반적으로 장치의 인터페이스 또는 구현 부품에 배치됩니다. 인터페이스는 클래스를 사용합니다.
변수:
// var 키워드는 변수 또는 객체를 선언하는 데 사용되며 Var I : Integer; I : 정수) : // 위의 함수의 매개 변수는 함수 실행 중에 전달 될 수 있으며 기본 함수 기능을 반환 할 수 있습니다.
varargs :
// Varargs는 CDECL 키워드와 함께 사용해야합니다. + 클래스 라이브러리. printf 함수를 인용하고 참조 된대로 매개 변수를 전달할 수있었습니다.
가상:
// Virtual은 가상 방법을 선언하는 데 사용됩니다. // 결함 메소드를 덮을 수 있으며, 프로그램을 최대한 빠르게 실행할 수 있습니다 (동적).
하는 동안:
// 키워드는 사이클이 끝나기 전에 사용됩니다.
와 함께:
// 키워드는 동일한 객체를 처리하여 많은 수의 반복 코드를 저장할 수 있습니다. Savetofile ( 'c : /demo.txt'); 클립 보드 코드에 매우 중복됩니다. form1.memo1.lines.append ( 'abc'); .SaVetOfile ( 'C : /demo.txt');
쓰다:
// WRITE는 개인 fvalue에 사용 된 멤버 또는 메소드를 식별하는 데 사용됩니다.
쓰기 :
// writeOnly 키워드는 객체가 작성된 것인지 확인하는 데 사용됩니다.
xor :
// XOR은 차이를 사용하거나 두 작업이 동일하게되면 true.var a : a : = 3; 'xor b') else writeln (a xor b ');