如果我在Delphi中只有它的字符串名称,如何引用一个单元(在运行时)?

时间:2011-05-20 21:40:37

标签: delphi reference delphi-units

我在区别单位中有相同名称的类型,我在单位字符串中有单位名称。我需要访问该单元的特定类型。我该怎么做?

示例:

unit Unit1

type
   TFooType = (
      bar1,
      bar2
   );

然后,我有另一个单位

unit Unit2

type
   TFooType = (
      foo1,
      foo2,
      foo3
   );      

而且,在我的代码中的某处,我有一个字符串变量“UnitName”,其中包含值“Unit1”,我想通过变量访问Unit1的“TFooType”类型。

我正在使用Delphi 2007

抱歉我的英语不好。

提前致谢。

3 个答案:

答案 0 :(得分:11)

您无法选择在运行时包含哪些单位。单位是编译时的概念。

此外,尽管具有相同的基本名称,但您的两种类型是完全不同的类型。在代码的其他地方,您不能拥有TFooType类型的变量,并且可以任意决定是否从这两个单元中分配值。该变量只能保存一个类型的值。

你将不得不考虑其他一些方法来完成你的真正任务。我邀请您发布一个新问题,描述您的真实任务。

答案 1 :(得分:1)

@Hrukai,就像乐高一样,你可以做很多事情,但有些事情并不是为那种方式而设计的。

听起来像你的最终目标是访问类型,你的起点是一个变量名。如果你把变量实现为类(OOP),你可以简单地做Obj.ClassName来找到它的类型......但是,如果你为你的实现选择了类,我预测这个需要(从变量访问类型)会从来没有出现过。

抵制创建新模式的冲动,而是利用类的力量。 http://www.delphibasics.co.uk/Article.asp?Name=OOExample

答案 2 :(得分:0)

你能做的最好的事情就像if name='Unit1' then T := Unit1.TFoo等。但是你怎么能用T呢?由于来自不同单元的枚举类型不同,因此很难想象能够使用T进行任何操作。实际上你怎么定义T?我能想象的唯一可能就是返回类型信息,但我现在让我的想象力疯狂!