Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1260327
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2008-09-16 14:57:51



我在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;  
   
 

阅读(682) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~