0

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

例子:

unit Unit1

type
   TFooType = (
      bar1,
      bar2
   );

然后,我有另一个单位

unit Unit2

type
   TFooType = (
      foo1,
      foo2,
      foo3
   );      

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

我正在使用德尔福 2007

对不起,我的英语不好。

提前致谢。

4

3 回答 3

11

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

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

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

于 2011-05-20T21:52:50.567 回答
1

@Hrukai,就像乐高一样,你可以做很多事情,但有些东西并不是为了那样使用而设计的。

在我看来,您的最终目标是访问类型,而您的起点是变量名。如果您将变量实现为类(OOP),您可以简单地执行 Obj.ClassName 来查找它的类型......但是,如果您为您的实现选择了类,我预测这种需求(从变量访问类型)会从来没有出现过。

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

于 2011-05-21T03:12:01.140 回答
0

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

于 2011-05-20T21:52:00.700 回答