关于OleVariant类型的疑问??? VCL组件开发及应用http://www.delphi2007.net/DelphiVCL/html/delphi_20061226151543105.html
我在remotedatamodule中创建了一个这样的过程(类似于策略模式中"上下文"类)
申明:
procedure StrategyTrans(var Stgy: OleVariant); safecall;
实现:
procedure TSvQueueRDM.StrategyTrans(var Stgy: OleVariant);
begin
CxQuStgy := Stgy.Create();//将具体的策略类对象传递给抽象类对象;
end;
其中,CxQuStgy为一基类抽象对象,而Stgy是我希望获得的基类的子类对象
但从另外一个地方传来的(var Stgy: OleVariant)参数是字符串类型的(这个字符串的内容是某个子类的类型名称).请问要怎样才能将Stgy字符串转换为类的对象?????????
怎么没有人来帮个忙哦
需要一数组对类进行维护,
arr: array of TClass;
然后类加入到数组。
类似下面,或者生命数组常量
SetLength(arr, Length(arr) + 1);
arr[High(arr)] := TClass1;
全部加入到数组
procedure TSvQueueRDM.StrategyTrans(var Stgy: OleVariant);
begin
for i:=0 to high(arr) do
if arr[i].ClassNameIs(Stgy) then
begin
CxQuStgy := arr[i].Create;
break;
end;
end;