Delphi 학습 노트 5--방법
3942 단어 DelphiDelphi 개발 학습 노트
다른 언어와 마찬가지로 Object Pascal 언어는 지정된 객체의 프로세스 및 함수에 속합니다.구조기와 분석 함수도 방법이다.
방법의 유형
방법의 유형은 정적 (static), 가상 (virtual), 동적 (dynamic), 메시지 처리 (message) 를 포함한다.
1.1 정적 방법
procedure IAmAStatic;
IamAstatic은 정적 방법입니다. 정적 방법은 방법의 기본 형식입니다. 정적 방법을 호출할 때 실행 가능한 파일에 실행 정보를 정적 연결할 수 있습니다.실행 속도가 가장 빠르지만 멀티태스킹을 지원하기 위해 덮어쓸 수 없습니다.
1.2 가상 방법
procedure IAmAVirtual; virtual;
가상 방법과 정적 방법의 호출 방식은 같다.
1.3 동적 방법
procedure IAmADynamic; dynamic;
1.4
메시지 처리
procedure IAmAMessage(var M : TMessage); message wm_SomeMessage;
1.5
방법 덮어쓰기
Object Pascal에서 덮어쓸 수 있는 방법은 선언할 때 virtual 또는 dynamic로 식별되는 방법입니다.
TFooChild = class(TFoo)
procedure IAmAVirtual; override;
procedure IAmADynamic; override;
procedure IAmAMessage(var M: TMessage); message wm_SomeMessage;
end;
1.6 방법의 오버로드: 같은 이름을 사용하여 한 역할 영역에서 여러 개의 절차를 설명하고 다른 매개 변수 목록을 나타낼 수 있다.매개 변수의 개수나 유형으로 구분해야 한다.예를 들면 다음과 같습니다.
Type
TSomeClass = class
procedure Amethod(I:integer); overload;
procedure Amethod(S:string); overload;
procedure Amethod(D:double); overload;
end;
1.7 메소드 이름 재도입
다시 도입하는 방법의 명칭 사용 전제는 파생류에서 성명한 방법명이 부류의 어떤 방법의 명칭과 같다는 것이다.파생 클래스에서reintroduce 표시기 사용하기
Type
TSomeBase = class
Procedure A;
end;
TSomeClass = class
Procedure A; reintroduce;
end;
1.8 self
Self: 모든 대상의 방법에 포함된 변수 중 하나입니다. 방법을 호출하는 데 사용되는 클래스 실례를 가리키는 바늘입니다.
1.9 방법의 중첩
procedure DoSomething(S: string);
var
X,Y: Integer;
procedure NestedProc(S: string);
begin
...
end;
begin
...
NestedProc(S);
...
end;
2. 호출 약정
호출 약속은 매개 변수가 루틴에 전달되는 순서를 결정한다.기본 규약은 register입니다.
register,pascal: 왼쪽에서 오른쪽으로 매개 변수를 호출하기;cdecl, stdcall,safecall은 오른쪽에서 왼쪽으로 매개 변수를 전달한다.register는 레지스터를 사용하여 데이터를 전달합니다.공공 속성에 접근하는 방법은register를 사용해야 합니다.c 또는 C++로 작성된 공공 라이브러리를 호출할 때 cdecl을 사용합니다.예를 들면 다음과 같습니다.
function MyFunction(X,Y : Real): Real;cdecl;
3. Forward는 루틴 블록을 Forward로 대체한다(국부 변수 성명과 문장 포함).그 목적은 함수나 과정을 실제 정의 전에 사용할 수 있도록 하는 것이다.예를 들면 다음과 같습니다.
funciton Caiculate(X,Y: Integer) : Real; forward;
4.External
External 지시자는 프로그램과 분리해서 컴파일하는 규칙을 호출할 수 있도록 합니다.변수 매개 변수가 있는 C++ 함수를 가져올 때 varags 지시자를 사용합니다.예를 들면 다음과 같습니다.
function printf(Format: PChar): Integer; cdecl;varargs;
대상 파일을 링크하려면 먼저 $L 컴파일러 지시자를 사용하여 대상 파일을 프로그램에 연결해야 합니다.예를 들면 다음과 같습니다.
procedure MoveWord(var Source,Dest;Count: Integer); external;
윈도우에서 함수를 동적으로 가져옵니다.
function SomeFunction(S: string): string exteranl 'strlib.dll';
동적 가져온 라이브러리의 이름은 라이브러리의 이름과 다를 수 있습니다.이렇게 하려면 external로 원본 이름을 지정해야 합니다.예를 들면 다음과 같습니다.
function MessageBox(HWind: Integer;Text,Caption: PChar; Flags: Integer): Integer;stdcall;external 'user32.dll' name 'MessageBoxA';
5. 매개변수
5.1 매개 변수 분류:value(수치 매개 변수),variable(변수 매개 변수),constant(상수 매개 변수) 또는out(out 매개 변수).기본값은 value입니다.키워드는 var(변수 매개 변수),const(상수 매개 변수),out(out 매개 변수)이다.
5.2 수치 매개 변수와 변수 매개 변수
수치 매개 변수는 수치를 통해 전달되고 변수 매개 변수는 인용을 통해 전달된다(변수를 바늘로 삼아 전달하는 것과 같다).
5.3 out 매개 변수
out 매개 변수는 출력을 위한 것입니다. 함수나 과정이 출력을 어디에 저장하는지 알려주지만 입력을 제공하지 않습니다.예를 들면 다음과 같습니다.
procedure GetInfo(out info:SomeRecordType);
GetInfo를 사용할 때는 다음과 같은 SomeRecordType 유형의 변수를 전달해야 합니다.
var MyRecord: SomeRecordType;
...
GetInfo(MyRecord);
out 매개 변수는 분포식 대상 모델에 자주 사용되며, 함수나 프로세스에 초기화되지 않은 변수를 전달할 때 out 매개 변수를 사용해야 한다.
5.4 열린 배열 매개변수
function Find(A: array of Char): Integer;
5.5 기본 매개 변수
기본값이 있는 매개 변수는 매개 변수 목록의 마지막에 나타나야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.