사용자 정의 클래스를 가져올 때 Pascal Script를 'Create'및 'Free'기능을 인식하도록하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1743643

  •  20-09-2019
  •  | 
  •  

문제

나는 이것의 예제에 문제가 있습니다 기사. 이 기사는 파스칼 스크립트에서 호출 할 수 있도록 자신의 클래스를 가져 오는 방법을 설명합니다. 사용자 정의 클래스를 가져오고 있지만 'Create'및 'free'함수를 인식하기 위해 Pascal 스크립트를 얻을 수는 없습니다.

내 플러그인 :

TMyPsPlugin = class
  public
    procedure PrintMessage(const AMessage: String);
end;

procedure TMyPsPlugin.PrintMessage(const AMessage: String);
begin
  ShowMessage(AMessage);
end;

내 앱 :

procedure TForm1.FormCreate(Sender: TObject);
var
  Plugin: TPSPlugin;
begin
  Plugin := TPSImport_MyPsPlugin.Create(Self);
  TPSPluginItem(ps.Plugins.Add).Plugin := Plugin;
end;

procedure TForm1.bCompileClick(Sender: TObject);
begin
  ps.Script.Text := mScript.Text;
  if ps.Compile then
    begin
      if ps.Execute then
        ShowMessage('Done.')
      else
        ShowMessage('Execution Error: ' + Ps.ExecErrorToString);
    end
  else
    HandleError;
end;

내 대본 :

program test;
var
  Plugin: TMyPsPlugin;
begin
  Plugin := TMyPsPlugin.Create;
  Plugin.PrintMessage('Hello');
  Plugin.Free;
end.

오류 메시지 :

[Error] (5:25): Unknown identifier 'Create'
[Error] (7:10): Unknown identifier 'FREE'
도움이 되었습니까?

해결책

분명히 플러그인 클래스는 Tobject에서 직접 내려갑니다. 추가하다 uPSC_std 그리고 uPSR_std 프로젝트와 실행에 SIRegisterTObject 그리고 RIRegisterTObject 플러그인을 등록하기 전에 (C 및 R은 컴파일 타임 및 런타임 버전입니다). 기본 생성자와 자유 메소드가 설정됩니다. 그래도 작동하지 않으면 장치 수입업자가 Tobject에서 내려 오는 것을 구체적으로 명시하십시오.

다른 팁

당신은 당신이 인용 한 기사에서 지시를 올바르게 따르지 않았습니다.

구체적으로 단위 수입업자를 실행한다고 말하면서 두 개의 추가 파일을 생성합니다 (myclass.pas에서 myclass.int를 생성하고 uPSI_MyClass.pas). 당신은 그것을 사용해야합니다 uPSI_MyClass.pas (물론 장치의 적절한 파일 이름을 사용하고) 해당 장치의 적절한 방법을 사용하십시오.

TMYPSPLUGIN의 소스가 mypsplugin.pas에 있다고 가정하면, 장치 수입업자는 mypsplugin.int 및 uPSI_MyPSPlugin.pas. 추가해야합니다 uPSI_MyPSPlugin 사용 절에 사용한 다음 사용하십시오 TPSImport_MyPSPlugin.Create 플러그인을 등록하기위한 추가 코드. (링크 된 웹 페이지의 네 번째 이미지를 참조하십시오 - 이미지에는 "ide_editor.pas"를 읽는 캡션 바가 있습니다.)이 시점에서 Pascal Script는 클래스를 알고 있으며이를 작성하고 무료 메소드임을 인식합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top