我在区别单位中有相同名称的类型,我在单位字符串中有单位名称。我需要访问该单元的特定类型。我该怎么做?
示例:
unit Unit1
type
TFooType = (
bar1,
bar2
);
然后,我有另一个单位
unit Unit2
type
TFooType = (
foo1,
foo2,
foo3
);
而且,在我的代码中的某处,我有一个字符串变量“UnitName”,其中包含值“Unit1”,我想通过变量访问Unit1的“TFooType”类型。
我正在使用Delphi 2007
抱歉我的英语不好。
提前致谢。
答案 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
?我能想象的唯一可能就是返回类型信息,但我现在让我的想象力疯狂!