首页 > Windows开发 > 详细

Delphi中关于Rtti的一些操作(一)

时间:2016-02-25 19:44:53      阅读:230      评论:0      收藏:0      [点我收藏+]

function TForm1.ShowMethodAddress(aObj: TDerived; const sData: String) : Pointer;
var
  aPtr : Pointer;
  sResult : String;
begin
  try
    aPtr := aObj.MethodAddress(sData);
    sResult := Format(‘%s : %x‘, [sData + ‘位于‘, Integer(aPtr)]);
    Memo1.Lines.Add(sResult);
  except
    on e : Exception do
    begin
      sResult := Format(‘%s : %s‘, [sData, e.Message]);
      Memo1.Lines.Add(sResult);
    end;
  end;
  Result := aPtr;
end;

procedure TForm1.ShowFieldAddress(aObj: TDerived; const sData: String);
var
  aPtr : Pointer;
  sResult : String;
begin
  try
    aPtr := aObj.FieldAddress(sData);
    sResult := Format(‘%s : %x‘, [sData + ‘位于‘, Integer(aPtr)]);
    Memo1.Lines.Add(sResult);
  except
    on e : Exception do
    begin
      sResult := Format(‘%s : %s‘, [sData, e.Message]);
      Memo1.Lines.Add(sResult);
    end;
  end;
end;

procedure TForm1.Button8Click(Sender: TObject);
var
  sData : String;
  aPtr : Pointer;
begin
  aPtr := Pointer(@Self.OnClick);
  sData := MethodName(aPtr);
  sData := Format(‘%x : %s‘, [Integer(aPtr), sData]);
  Memo1.Lines.Add(sData);
end;

http://blog.csdn.net/diligentcatrich/article/details/7725782

Delphi中关于Rtti的一些操作(一)

原文:http://www.cnblogs.com/findumars/p/5217995.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!