Два класса в двух единицах с одинаковым именем класса в Delphi - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть случай в Delphi, такой как:

Единица A содержит класс «Один» Единица B содержит класс «Один»

Я в классе, который использует единицу A и хочуиспользовать статическую функцию из класса One в B;как мне это сделать?В C # я бы написал что-то вроде:

B.One.SomeProcedure

Или даже я бы использовал «использование» для «переименования» одного пространства имен.Что я могу сделать в Delphi?(Удаление «использует» для блока А не вариант, и не переименование одного из двух классов.)

Редактировать: Я использую Delphi 2007.

Ответы [ 4 ]

2 голосов
/ 03 декабря 2010

как насчет TNewClassA = class (UnitA.One) и TNewClassB = class (UnitB.One)?

2 голосов
/ 03 декабря 2010

Что вы подразумеваете под "классом, который использует"? Может быть, вы имеете в виду «единицу, которая использует»? Если это так, вам нужно добавить и A, и B в предложение uses. Затем вы можете различить две процедуры, написав A.One.SomeProcedure или B.One.SomeProcedure. Если вы просто напишите One.SomeProcedure, будет использоваться процедура в единицах, перечисленных last в предложении uses. [Здесь я предполагаю, что One - это классы, содержащие процедуры класса SomeProcedure. Если SomeProcedure - это обычная процедура класса One, вам, конечно, нужно создать объект этого класса и использовать его. Затем вы можете сделать myobj := A.One.Create или myobj := B.One.Create, где var myobj: A.One или var myobj: B.One, соответственно.]

(Помните также, что каждый блок содержит два uses предложения: одно в начале раздела interface и одно в начале раздела implementation. Если вы используете что-то из устройства A в строке N , предложение uses, содержащее единицу A, должно быть расположено на линии выше N .)

Также обратите внимание, что в Delphi класс должен называться TOne с префиксом T. Все следуют этому соглашению, и без него это выглядит странно.

1 голос
/ 03 декабря 2010

Вы можете сделать то же самое. UnitName.ClassName.Method, как в C #.

1 голос
/ 03 декабря 2010

Вы можете использовать следующий способ: [UnitName]. [Function]. Например, B.SomeProcedure

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...