delphi-->对象的函数/过程,还是应用于非对象的函数/过程

http://blog.csdn.net/procedure1984/archive/2009/02/16/3897028.aspx

 

type
    TMyObjectDelegate = procedure (AIntParam: integer; AStringParam: string) of object; //对象的

函数/过程
    TMyRegularDelegate = procedure (AIntParam: integer; AStringParam: string); //非对象的(一般的)函数/过程
{ 非对象(一般)的函数列表 }  
  • function Add(const ANumOne: Double; const ANumTwo: Double): Double;   
  • begin  
  •   Result := ANumOne + ANumTwo;   
  • end;   

 

  • { TfrmTest } 
    { 对象的函数列表 } 
    function TfrmTest.Add(const ANumOne, ANumTwo: Double): Double;  
    begin 
      Result := ANumOne + ANumTwo;  
    end;  

 

 

  • 说明:如果有  of object 表示必须要声明为类的方法,,否则只要声明为一般的方法

function  TfrmTest.xxxxxx: integer;

begin

  • case Self.FDelegateType of 
              dtObject:  
                begin 
                  dblResult := Self.DoObjectCalc(dblNumOne, dblNumTwo, Self.Add);  
                  //如果需要传入对象方法的地方,错误传入了非对象的add方法  
                  //dblResult := Self.DoObjectCalc(dblNumOne, dblNumTwo, UnitFrmTest.Add);  
                  //则会提示以下错误:  
                  //E2009 Incompatible types: 'regular procedure and method pointer'  
                end;  
              dtRegular:  
                begin 
                  dblResult := DoRegularCalc(dblNumOne, dblNumTwo, UnitFrmTest.Add);  
                  //若为  
                  //dblResult := DoRegularCalc(dblNumOne, dblNumTwo, Self.Add);  
                  //则会提示以下错误:  
                  //E2009 Incompatible types: 'regular procedure and method pointer'  
                end;  
            end

   增加:如果在需要非对象的add方法时,传入了一个本函数中的子函数,则提示

  //E2094 Local procedure/function 'comm' assigned to procedure variable

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值