Delphi 함수 포인터 프로세스/함수 유형
Delphi 함수 포인터 프로세스/함수 유형
Pascal의 프로세스 유형은 C 언어의 함수 포인터와 비슷하며, 표현을 통일시키기 위해 함수 포인터라고 부른다.함수 바늘의 성명은 매개 변수 목록만 필요합니다.함수라면 되돌아오는 값을 추가합니다.다음은 대상(일반)이 아닌 함수/과정을 가리키는 함수 지침을 설명한다.
예를 들어, 참조를 통해 전달되는 정수 매개변수를 포함하는 프로세스 유형을 선언합니다.
type IntProc = procedure (var Num: Integer);//IntProc은 프로세스에 대한 함수 포인터입니다.
이 프로세스 형식은 매개 변수와 완전히 같은 루틴을 호환합니다. 즉, 이 루틴으로 설명하는 변수로 모든 함수를 가리키며, 이를 통해 함수를 호출할 수 있습니다.
다음은 호환 루틴입니다.
procedure DoubleTheValue (var Value: Integer);
begin
Value := Value * 2;
end;
함수 바늘은 두 가지 다른 목적에 사용할 수 있다. 그것이 바로 함수 바늘 유형의 변수를 설명하는 것이다.또는 함수 바늘을 매개 변수로 다른 절차에 전달한다.위에서 지정한 유형과 과정 설명을 이용하여 다음 코드를 쓸 수 있습니다.
var IP: IntProc; X: Integer; begin IP := DoubleTheValue; X := 5; IP (X); end;
비록 이런 호출 방법은 직접 호출하는 것보다 번거롭지만, 우리는 왜 이런 방식을 사용해야 합니까?
(1) 어떤 상황에서 어떤 함수를 호출할지 실제(운행시)에서 결정해야 하기 때문에 조건에 따라 판단하고 같은 표현으로 서로 다른 함수를 호출하는 것이 유연하다.
(2) 함수 지침을 이용하여 우리는 위탁을 실현할 수 있다. 위탁은.Net 에서 남김없이 발휘되었지만 델피 역시 실현할 수 있었다
(3) 리셋 메커니즘 실현
delphi에서는 함수 바늘을 통해 함수를 매개 변수로 전달하고 다른 함수에서 호출할 수 있습니다.
1) 먼저 함수 포인터 유형 TFunctionParameter를 설명합니다.
type TFunctionParameter = function(const value : integer) : string;
2) 매개 변수로 전달될 준비 함수 정의
function One(const value : integer) : string; begin result := IntToStr(value) ; end;
function Two(const value : integer) : string; begin result := IntToStr(2 * value) ; end; 3) 동적 함수 포인터 매개변수를 사용할 함수를 정의합니다.
function DynamicFunction(f : TFunctionParameter; const value : integer) : string; begin result := f(value) ; end;
4) 위의 동적 함수 사용 실례
var s : string; begin s := DynamicFunction(One,2006) ; ShowMessage(s) ;//will display "2006"
s := DynamicFunction(Two,2006) ; ShowMessage(s) ;//will display "4012" end;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.