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;

좋은 웹페이지 즐겨찾기