Delphi中具有相同类名的两个单元中的两个类

时间:2010-12-02 22:51:25

标签: delphi namespaces

我在Delphi中有一个例如:

单元A包含“One”类 单元B包含“One”类

我在一个使用单元A的类中,想要使用B类中的一个静态函数;我该怎么做?在C#中,我写了类似的东西:

B.One.SomeProcedure

甚至我会使用“使用”来“重命名”一个命名空间。在德尔福可以做些什么? (删除单元A的“使用”不是一个选项,也不是重命名两个类中的一个。)

编辑:我正在使用Delphi 2007。

4 个答案:

答案 0 :(得分:2)

“使用的课程”是什么意思?也许你的意思是“一个使用的单位”?如果是这样,您需要将A和B都添加到uses子句中。然后,您可以通过编写A.One.SomeProcedureB.One.SomeProcedure来区分这两个过程。如果您只是编写One.SomeProcedure,将使用uses子句中 last 所列单元中的过程。 [此处我假设One是包含类过程 SomeProcedure的类。如果SomeProcedureOne类的普通过程,您当然需要创建此类的对象并使用它。然后,您可以分别myobj := A.One.Createmyobj := B.One.Createvar myobj: A.Onevar myobj: B.One。{/ p>

(还要记住,每个单元都包含两个 uses子句:一个位于interface部分的开头,一个位于implementation部分的开头。如果您在 N 行使用单元A中的内容,则包含单元A的uses子句需要位于 N 上方的一行上。)

另请注意,在Delphi中,应该使用TOne前缀调用类T。每个人都遵循这个惯例,如果没有它,它看起来很奇怪。

答案 1 :(得分:2)

TNewClassA = class(UnitA.One)和TNewClassB = class(UnitB.One)怎么样?

答案 2 :(得分:1)

您可以使用以下方式:[UnitName]。[功能]。例如B.SomeProcedure

答案 3 :(得分:1)

你可以做同样的事情。 UnitName.ClassName.Method,就像在C#中一样。