鑑於某人說delphi的反射不能傳入或傳出類,我在此糾正一下這個說法,下面的**可以證實,類可以傳入傳出。
由於我已經把d2009的反射單元移去d2007,因此就不用d2009了,所以**中暫時不考慮unicode的問題。
unit unit1;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs, objautox, stdctrls;
type
ttest=class(tpersistent)
public
procedure call(s: string; aform: tform);
function call2(s: string): tcomponent;
end;
tform1 = class(tform)
button1: tbutton;
button2: tbutton;
procedure button1click(sender: tobject);
procedure button2click(sender: tobject);
private
public
end;
varform1: tform1;
implementation
procedure tform1.button1click(sender: tobject);
vart: ttest;
mih : pmethodinfoheader;
begin
t := ttest.create;
mih := getmethodinfo(t, 'call');
objectinvoke(t, mih, [1,2], ['222',integer(self)]);
end;
procedure tform1.button2click(sender: tobject);
vart: ttest;
mih : pmethodinfoheader;
ret: integer;
begin
t := ttest.create;
mih := getmethodinfo(t, 'call2');
ret:=objectinvoke(t, mih, [1,2], ['button1']);
tbutton(ret).caption := '222';
end;
procedure ttest.call(s: string; aform: tform);
begin
showmessage(s+':'+aform.caption);
end;
function ttest.call2(s: string): tcomponent;
begin
result := form1.findcomponent(s);
end;
end.
C 的類反射多型機制
一 基類 class icmdstatic 二 子類1 class ccmd502 public icmdstatic 三 子類2 class ccmd503 public icmdstatic 四 類工廠模板標頭檔案 ifndef genericfactoryh define genericfac...
類的載入和反射機制
1.啟動jvm 2.將需要執行的class檔案載入到虛擬機器記憶體中 3.找到主類,開始執行主函式 載入步驟 1.先委託父類載入類,如果父類已經載入,就不需要再次載入,如果父類沒有載入,再由本載入器載入 2.解析類路徑,將類路徑轉換成檔案路徑 3.通過檔案輸入流來讀取class檔案,得到位元組陣列 ...
C 使用反射機制獲取類資訊
用反射動態建立類例項,並呼叫其公有成員函式。新建乙個類庫專案,增加乙個getsum方法。using system namespace classlibrary1 public int getsum int x,int y 再另建乙個專案,在專案中引用上面生成的classlibrary1.dll sy...