全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1269
推到 Plurk!
推到 Facebook!

請教Call a function whose name is stored in a string

尚未結案
blue
中階會員


發表:169
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2020-03-30 17:23:36 IP:125.227.xxx.xxx 未訂閱
Hi,各位先進大家好:
小弟想執行由字串內容指定的Procedure(不使用If Then),
找到程式如下,可是執行卻會出現 Invalid Class Typecast,
請問是何原因?
謝謝!

Type
THelper = class
public
class procedure Test;
end;

function ExecuteMethod(AClass : TClass; AMethodName : String; const AArgs: Array of TValue) : TValue;
var RttiContext : TRttiContext;
RttiMethod : TRttiMethod;
RttiType : TRttiType;
RttiObject : TObject;
begin
RttiObject := AClass.Create;
try
RttiContext := TRttiContext.Create;
RttiType := RttiContext.GetType(AClass);
RttiMethod := RttiType.GetMethod(AMethodName);
Result := RttiMethod.Invoke(RttiObject,AArgs);
finally
RttiObject.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ExecuteMethod(THelper, 'Test, []);
end;
系統時間:2024-04-29 16:57:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!