我想用变量名去调用过程名,不知道怎么写代码

u011429135 2013-09-12 10:45:33
我有个过程

procedure Tzmenu_w.zmenu_cxm_prog;
begin
if a1='cggl' then
P1 else
if a1='xsgl' then
P2 else
if a1='kcgl' then
P3 else
...............

end;
说明:p1,p2,p3....都是过程名,也许以上的过程有几百行代码,我想用一个选择判断语句搞定
那么这样就需要用变量名代替过程名
procedure Tzmenu_w.zmenu_cxm_prog;
begin
if 条件 成立 就执行 某变量(其实这变量与某过程关联)


...全文
466 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathletboy 2013-09-25
  • 打赏
  • 举报
回复

type
  TCalls = class
  published
    procedure a1;
    procedure a2;
  end;

  TCall = procedure;



{ TCalls }

procedure TCalls.a1;
begin
  ShowMessage('a1');
end;

procedure TCalls.a2;
begin
  ShowMessage('a2');
end;
注意方法要放published
function Call(const name: string): Boolean;
var
  p: Pointer;
begin
  p := TCalls.MethodAddress(name);
  Result := p <> nil;
  if Result then
    TCall(p);
end;
调用直接传入函数名就可以

Call('a1');
Call('a2');
小呆之家 2013-09-25
  • 打赏
  • 举报
回复
建议楼主写一个SQL指令生成器,负责生成你想要的指令; 比如: type TOperatorType=(EVENT_P1,EVENT_P2,...); function MakeSqlStr_CallProcDoSmth(nEvent:TOperatorType):string; var strSql:string; begin case nEvent of event_p1:strsql:=format('',[]); event_p2:strsql:=format('',[]); default:string=''; end; result:=strsql; end;
Oraclers 2013-09-12
  • 打赏
  • 举报
回复
type TStrProc=Procedure(const S :string); var MyStrProc :TStrProc; //假如有一个过程 Procedure Test(const S:string); //另一个过程Procedure Test2(const S:string); MyStrProc := Test; // MyStrProc(S); //执行Test; MyStrProc := Test2; MyStrProc(S);//执行Test2;
tcmakebest 2013-09-12
  • 打赏
  • 举报
回复
exec P1
s11ss 2013-09-12
  • 打赏
  • 举报
回复
procedure TForm1.proc;
begin
  showmessage('abc')
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  p1: procedure of object;
begin
  p1 := proc;
  p1;
end;
s11ss 2013-09-12
  • 打赏
  • 举报
回复
引用 6 楼 s11ss 的回复:
p1,p2,p3....都是过程名 ----
如果p1,p2,p3的参数都不一样,那就不好办了!你的程序架构需要调整了!
s11ss 2013-09-12
  • 打赏
  • 举报
回复
p1,p2,p3....都是过程名 ----
u011429135 2013-09-12
  • 打赏
  • 举报
回复
这问题还没搞定
u011429135 2013-09-12
  • 打赏
  • 举报
回复
这问题还没搞定呀
内容概要:本文档是2025年全国广播电视技术能手竞赛IPTV专业的竞赛内容大纲,旨在指导参赛选手准备比赛。竞赛分为理论和实操两大部分。理论部分涵盖基本知识、基础理论和专业知识,包括法律法规、技术标准、IPTV技术基础、信号传输与分发、网络和数据安全等。实操部分则涉及IPTV系统设备、仪器设备的操作使用和指标测量。具体内容包括IPTV系统架构、传输技术与指标、设备配置及维护、专业技能如测量工具使用、视音频指标测量、直播点播协议分析、播出网络性能测量、网络安全数据分析以及系统故障排查等。 适合人群:从事或有意从事IPTV相关工作的技术人员,尤其是有志于参加全国广播电视技术能手竞赛的专业人士。 使用场景及目标:①帮助参赛选手全面了解并掌握IPTV相关的法规文件和技术标准;②提升选手对IPTV系统架构、传输技术和设备配置的理解;③增强选手在实际操作中的测量、分析和故障排查能力;④确保选手能够熟练运用各种测量工具和分析软件进行视音频指标测量和网络安全数据分析。 阅读建议:由于文档内容详尽且专业性强,建议读者在学习过程中结合实际案例和操作练习,同时参考相关技术文献,以便更好地理解和掌握竞赛所需的知识和技能。

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧