Callmethod
Всем доброго времени суток!
Пытаюсь зарегестрировать метод, в ответ получаю ошибку:
Application Error
Exception EAccessViolation in module Test.exe at 005D513C.
Access violation at address 009D513C in module 'Test.exe'. Write of address 00000004.
ОК
Ошибка возникает в этом месте:
Код программы:
Что делаю не так??? Весь день провозился так и не понял
Пытаюсь зарегестрировать метод, в ответ получаю ошибку:
Application Error
Exception EAccessViolation in module Test.exe at 005D513C.
Access violation at address 009D513C in module 'Test.exe'. Write of address 00000004.
ОК
Ошибка возникает в этом месте:
procedure TfsClassVariable.AddMethod(const Syntax: String; CallEvent: TfsCallMethodNewEvent);
var
m: TfsMethodHelper;
begin
m := TfsMethodHelper.Create(Syntax, FProgram); // <-- Здесь ошибка
m.FOnCallNew := CallEvent;
m.FClassRef := FClassRef;
FMembers.Add(m);
end;
Код программы:
unit ufrxValueListEditorRTTI;
interface
uses fs_iinterpreter, ufrxValueListEditor, frxClassRTTI,Windows, Classes, SysUtils;
type
TFunctions = class(TfsRTTIModule)
private
function CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String; Caller: TfsMethodHelper): Variant;
public
constructor Create(AScript: TfsScript); override;
end;
implementation
constructor TFunctions.Create(AScript: TfsScript);
begin
inherited Create(AScript);
with AScript do
begin
{ регистрируем класс и указываем, кто является его родителем }
AddClass(TfrxValueListEditor, 'TfrxDialogControl');
with AddClass(TfrxValueListEditor, 'TfrxDialogControl') do begin
AddMethod('procedure InsertRow(KeyName,Value : String)', CallMethod);
end;
end;
end;
function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; Caller: TfsMethodHelper): Variant;
begin
if MethodName = 'InsertRow' then
TfrxValueListEditor(instance).InsertRow(Caller.Params[0],Caller.Params[1]);
end;
initialization
fsRTTIModules.Add(TFunctions);
end.
Что делаю не так??? Весь день провозился так и не понял