请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2919|回复: 2

函数名作参数

[复制链接]

该用户从未签到

发表于 2011-9-2 18:16:38 | 显示全部楼层 |阅读模式
  type
    Tf1 = procedure (var v1: string); stdcall;
  procedure f1(var v1: string); stdcall;
  begin
    ShowMessage(v1);
  end;
  procedure f2(var f: Tf1);
  var
    s: string;
  begin
    s := DateTimeToStr(now());
    Tf1(f)(s);
  end;
var
  v: string;
begin
  f2(f1);
end;   

编译时提示f1参数数量错误,请问怎么解决,谢谢!
回复

使用道具 举报

该用户从未签到

发表于 2011-9-9 12:55:53 | 显示全部楼层
應該是要用function吧!procedure是沒有回傳值的喔
而且即使用function當參數,也不可以用於傳址呼叫。

以上是我的個人理解,希望有真正懂得人指點一下。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-11-17 16:45:58 | 显示全部楼层
需要在 f1 前面加上 @ 运算符, 除非在 Delphi 模式下。

另外在 f2 裡调用 f 的时候不需要那个额外的 typecast。
回复 支持 反对

使用道具 举报

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1

GMT+8, 2021-5-9 00:52 , Processed in 0.052022 second(s), 24 queries .

Powered by Discuz! F1.0 Build 20160930

© 2001-2021 Comsenz Inc. & Discuz! Fans

快速回复 返回顶部 返回列表