Delphi根据方法名调用方法
type
TForm1 = class(TForm)
public
published
procedure DoJsCall(str:string); //必须声明方法为published
function DoJsCall2(str:string):Tobject;
end;
TProcedure = function(Param: string):Tobject of object; //定义方法原型,方便调用
var
Form1: TForm1;
procedure TForm1.DoJsCall(str: string);
begin
mmo1.Lines.Add(str);
end;
function TForm1.DoJsCall2(str: string): Tobject;
begin
mmo1.Lines.Add(str);
Result := TObject(mmo1.Lines.Text);
end;
//根据方法名调用方法
function ExecuteMethod(Obj: TObject; Name, Param: string):Tobject;
var
PMethod: TMethod;
AProcedure: TProcedure;
begin
PMethod.Data := Pointer(Obj);
PMethod.Code := Obj.MethodAddress(Name);
if Assigned(PMethod.Code) then
begin
AProcedure := TProcedure(PMethod);
Result := AProcedure(Param);
end;
end;
调用:
procedure TForm1.btnExecuteMethodClick(Sender: TObject);
var
s : string;
begin
mmo1.Text := '';
ExecuteMethod(self ,'DoJsCall2','aaa');
ShowMessage('Step1:'+mmo1.Text);
s := PChar(ExecuteMethod(self ,'DoJsCall2','bbb'));
ShowMessage('Step2:'+s);
end;
Delphi根据方法名调用方法的更多相关文章
- C# 反射,通过类名、方法名调用方法
在 C# 代码中,有些时候只知道方法的名字(string),需要调用该方法,那么就需要用到 C# 的反射机制.下面是一个简单的 demo. using System; using System.Ref ...
- 用反射封装HttpHandler,实现通过action方法名调用方法
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...
- delphi操作文本文件的方法简介
delphi操作文本文件的方法简介减小字体 增大字体 作者佚名来源不详发布时间2008-5-31 10:31:16发布人xuedelphi1 文件类型和标准过程 Delphi同Object ...
- Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息
Delphi之静态方法,虚方法virtual,动态dynamic,抽象abstract,消息 http://www.cnblogs.com/zhwx/archive/2012/08/28/266055 ...
- [delphi]indy idhttp post方法
网易 博客 LOFTCam-用心创造滤镜 LOFTER-最美图片社交APP 送20张免费照片冲印 > 注册登录 加关注 techiepc的博客 万事如意 首页 日志 LOFTER 相册 音乐 ...
- Delphi的移动文件方法(转)/删除文件:/文件的复制
RenameFile,DeleteFile,MoveFile Delphi的移动文件方法 uses ShellApi; procedure ShellFileOperation(fromFile: ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
- paip。java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型
paip.java 高级特性 类默认方法,匿名方法+多方法连续调用, 常量类型 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- JavaScript【面向对象】-静态方法-私有方法-公有方法-特权方法
JavaScript面向对象是近年来比较火的一个概念了,由于小弟才疏学浅,虽然做过不少的web项目,看了网上很多深奥的资料和教程,还是对他们深奥 的理论一知半解,前段时间看了点书,总算有了自己的理解, ...
随机推荐
- Python的itertools模块
本章将介绍Python自建模块itertools,更多内容请参考:Python参考指南 python的自建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertool ...
- Lambda 表达式 是 个 好东东
Lambda 表达式 是 个 好东东 首先,通过 Lambda 表达式 + 动态语言特性 dynamic , C# 已经 可以 实现 函数式 编程 了 其次, 利用 Lambda, 可以 实现 AOP ...
- spring中afterPropertiesSet方法与init-method配置描述
1. InitializingBean.afterPropertiesSet()Spring中InitializingBean接口类为bean提供了定义初始化方法的方式,它仅仅包含一个方法:after ...
- DES加密Java实现
下面是代码的实现: package com.smt.cipher.symmetry; import java.nio.charset.Charset; import java.security.Sec ...
- logback使用介绍
参考 https://www.cnblogs.com/warking/p/5710303.html
- PHP-不同Str 拼接方法性能对比
问题 在PHP中,有多种字符串拼接的方式可供选择,共有: 1 . , .= , sprintf, vprintf, join, implode 那么,那种才是最快的,或者那种才是最适合业务使用的,需要 ...
- workerman 简单笔记
运行命令 curl -Ss http://www.workerman.net/check.php | php 都显示的ok (注意:检测脚本中没有检测event扩展或者libevent扩展) ...
- R语言数据挖掘相关包总结-转帖
与数据挖掘有关或者有帮助的R包和函数的集合. 1.聚类 常用的包: fpc,cluster,pvclust,mclust 基于划分的方法: kmeans, pam, pamk, clara 基于层次的 ...
- 解除IE锁定主页批处理
解除IE锁定主页.bat rem 解除IE锁定主页@echo offecho HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main [ ...
- random.sample函数
import random list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for i in range(3): slice = random.sample(list, ...