
18.02.2012, 19:57
|
Активный
|
|
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
|
|
ObjectInvoke
Как вариант:
Код:
uses
ObjAuto,
type
TMyClass = class
public
{$METHODINFO ON}
function test4(N:integer; S:String):String;
procedure test5;
{$METHODINFO OFF}
published
end;
implementation
function TMyClass.test4(N:integer; S:String):String;
begin
result := 'test string: '+S+' ('+IntToStr(N)+')';
end;
procedure TMyClass.test5;
begin
ShowMessage(Self.ClassName);
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
C:TMyClass;
M:PMethodInfoHeader;
V :Variant;
begin
C := TMyClass.Create;
try
M := GetMethodInfo(C, 'test4');
if M <> nil then begin
V := ObjectInvoke(C, M, [1, 2], [55, 'string']);
ShowMessage(trim(V));
end
else begin
ShowMessage('GetMethodInfo (test4): Error');
end;
M := GetMethodInfo(C, 'test5');
if M <> nil then begin
ObjectInvoke(C, M, [], []);
end
else begin
ShowMessage('GetMethodInfo (test5): Error');
end;
finally
C.Free;
end;
end;
|