delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
关于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;  
   
 

posted on 2008-09-19 13:42 delphi2007 阅读(317) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。