كيف يمكنني الحصول على باسكال سيناريو الاعتراف ب "خلق" وظائف "الحرة" عند استيراد فئة مخصصة؟

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

  •  20-09-2019
  •  | 
  •  

سؤال

وأواجه مشكلة مع المثال من هذا <وأ href = "http://devcenter.remobjects.com/articles/؟id=٪7BB2CAB2FE-A831-452E-AF7A-6E2C6021D489٪7D" يختلط = "نوفولو noreferrer "> المقالة . توضح هذه المقالة كيفية استيراد الطبقات الخاصة بك بحيث يمكن استدعاؤها من سيناريو باسكال. أنا استيراد فئة مخصصة بلدي ولكن لا يمكن الحصول باسكال سيناريو الاعتراف وظائف 'إنشاء' و 'الحرة'.

وبلدي المساعد:

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") وعند هذه النقطة، باسكال سيناريو هو علم صفك وسوف تعترف انها خلق وأساليب الحرة

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top