Delphi.Вызов методов объектов по имени.Часть 1

Самый простой на мой взгляд способ вызвать метод объекта по имени - использование методов GetMethodInfo/ObjectInvoke модуля ObjAuto. Доступные методы нужно заключить в директивы {$METHODINFO } чтобы компилятор включил в код информацию о методах, необходимую для вызова GetMethodInfo.

Пример использования:

pascal
{$APPTYPE CONSOLE}

uses ObjAuto;

type
   TMyClass = class
   {$METHODINFO ON}
   public
      function test4(N:integer; S:String):String;
   end;
   {$METHODINFO OFF}

function TMyClass.test4(N:integer; S:String):String;
begin
   Writeln(S);
   Writeln(N);
   result := 'test string';
end;

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']);
         writeln(V);

      end;
   finally
      C.Free;
   end;
   readln;
end.

 Delphi.Вызов методов объектов по имени.Часть 2


15 февраля 2009

Comments
Вы можете оставить комментарий или задать вопрос
Ваше имя:

Текст сообщения:


Copyright © 2009-2014 by