How to execute a method (procedure/function) by name

转载 2004年10月25日 10:06:00

Here's a simple trick to execute a Delphi object's method by name:

~~~~~~~~~~~~~~~~~~~~~~~~~
type
牋 TForm1 = class(TForm)
牋牋 Button1: TButton;
牋牋 procedure Button1Click(Sender: TObject) ;
牋牋 procedure CallMeByName(Sender: TObject) ;
牋 private
牋牋 procedure ExecMethod(OnObject: TObject; MethodName: string) ;
牋 end;

var
牋 Form1: TForm1;

type
牋 TExec = procedure of object;

procedure TForm1.ExecMethod(OnObject: TObject; MethodName: string) ;
var
牋 Routine: TMethod;
牋 Exec: TExec;
begin
牋 Routine.Data := Pointer(OnObject) ;
牋 Routine.Code := OnObject.MethodAddress(MethodName) ;
牋 if NOT Assigned(Routine.Code) then Exit;
牋 Exec := TExec(Routine) ;
牋 Exec;
end;

procedure TForm1.CallMeByName(Sender: TObject) ;
begin
牋 ShowMessage('Hello Delphi!') ;
end;

procedure TForm1.Button1Click(Sender: TObject) ;
begin
牋 ExecMethod(Form1, 'CallMeByName') ;
end;

渣翻——Function、Method、Procedure和Subroutine的区别

原文链接:What are the main differences between a function, a method, a procedure and a subroutine?函数(fun...
  • millis
  • millis
  • 2017年07月30日 20:25
  • 188

How to name a function

Generally, function names should be simple, understandable (self-description) and correct.
  • fishhg
  • fishhg
  • 2011年03月01日 15:05
  • 211

Attempt to execute SCRIPT plot as a function?

刚编写完一个简单的画图程序,代码如下close all;clc;clear;% sinxx = linspace(0,2*pi,200);f1 = sin(x);plot(x,f1);title(pl...
  • chl033
  • chl033
  • 2009年10月22日 11:30
  • 13537

Matlab Attempt to execute SCRIPT*as a function解决方法

原因:1、现有的.m文件有的与*函数重名,所以matlab编译器不知道在遇到*的时候到底该执行哪一个函数。2、现有的变量名字,如数组名S,matlab编译器不知道在越到这个变量名或者数组名时,是执行函...
  • yihaizhiyan
  • yihaizhiyan
  • 2010年12月13日 19:20
  • 43329

matlab的plot调用函数不能用了,总出现错误:Attempt to execute SCRIPT plot as a function

问题解决: 查找当前目录下,可能有一个plot.m脚本。删掉或重命名即可。 注意:保存图片名称时不要存为plot.m,因为matlab中plot函数的脚本文件就是plot.m,要防止该文件为重新定...
  • gtx_tt
  • gtx_tt
  • 2015年09月04日 22:34
  • 2547

Attempt to execute SCRIPT vl_nnconv1 as a function:

matlab遇到错误: Attempt to execute ******* as a function 解决: 将报错的那个函数进行重命名就解决了。...
  • m0_37407756
  • m0_37407756
  • 2017年05月19日 10:48
  • 373

GRANT 给存储过程赋权限

    周所周知,grant是给别的用户赋权限。他不只能够给表,视图赋权限,而且对存储过程,方法,以及包都可以,具体语法参考如下:     1.grant给表赋权限:     grant  selec...
  • mouseshuai
  • mouseshuai
  • 2010年01月17日 16:21
  • 18981

Matlab Attempt to execute SCRIPT * as a function解决方法

http://www.mathworks.com/matlabcentral/answers/93148 http://blog.csdn.net/yihaizhiyan/article/detail...
  • u012564690
  • u012564690
  • 2014年04月03日 20:01
  • 7393

解决 web service is not a valid method for this service

环境:ubuntu 12.04  LAMP (PHP5.3.10)先来看下,我整个测试的过程和出现问题地方。web serviceclientmath.wsdl文件已经事先生成好了。。。执行clien...
  • kaizhu_Qin
  • kaizhu_Qin
  • 2013年12月23日 16:01
  • 1686

解决Attempt to execute SCRIPT mexLasso as a function

Undefined function or method 'vgg_kmiter' for input arguments of type 'double'. Error in ==> vgg_km...
  • qykshr
  • qykshr
  • 2013年11月24日 17:19
  • 4910
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:How to execute a method (procedure/function) by name
举报原因:
原因补充:

(最多只允许输入30个字)