tips:通过interface的实例得到该接口的字符串名称

如果使用{$M+}参数来定义接口,那么程序将会为该接口生成rtti信息,例如

{$M+}
    Isome = interface
        function GeStr: string;
    end;
{$M-}

接下来,我们可以访问该接口的信息了

uses TypInfo,IntfInfo;

procedure TForm1.Button1Click( Sender: TObject );
var
    intfMd               : TIntfMetaData;
    msg : string;
begin
    GetIntfMetaData( TypeInfo( Isome ), intfMd );

    msg := msg + sLineBreak +'接口名称' + intfmd.Name ;
    msg := msg + sLineBreak +intfMd.UnitName +'单元';
    msg := msg + sLineBreak +'有' + IntToStr(Length(intfMd.MDA))+'个方法';
    msg := msg + sLineBreak +intfMd.MDA [0].Name ;
    msg := msg + sLineBreak +'调用惯例:'+CallingConventionName[    intfMd.MDA [0].CC];

    showmessage(msg);

    showMessage(GetTypeData(TypeInfo(TForm1)).UnitName); //可以得到类声明的单元

end;

还有其他的一些信息,没有一一枚举了,这些将有助于插件系统的开发

 

发表于 2005年07月24日 8:53 AM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值