Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Правильное унаследование свойств классов. [D7, Win95/98, Win2k]


Страницы:   1 2

Виктор ©   (2004-12-06 10:42:00) 

Доброго всем дня Ув. Мастера.
Пишу на библиотеках Bpl часто используемые uses запихнул в общую библиотеку vcl, DB, DBGrid, pFIBDatabase ,pFIBDataSet
Подскажите пожалуста как правильно описать свойства класса так, что бы в другом юните который использует общий подгружаемый модуль, видеть свойства перечисляемого типа?


ЮЮ   (2004-12-06 13:07:00) [1]

так в плагинах же, а не в плагиатах, типа
edxDBGrid=class(TdxDBGrid);

у библиотеки dx наверняка есть RunTimе билиотека, как и у VCL. Вот их и распространяйте со своим приложением, а не "дутую" Main.bpl


DiamondShark   (2004-12-06 13:06:00) [2]


> Простите но этот прицип используется в плагинах, если Вы
> этого не знали!

Это вас обманули.

Но речь не о том.

Вот примерчик простой:

unit Unit2;

interface

type
 TEnum = (one, two, three);

implementation

end.

unit Unit3;

interface

uses
 Unit2;

type
 TMyClass = class
 public
   Field: TEnum
 end;

implementation

end.

unit Unit1;

interface

implementation

uses Unit3;

var
 Z: TMyClass;

begin
 Z.Field := one; // <= Undeclared identifier 'one'
end.

Этот пример безотносителенк пакетам.
Модули могут быть в разных пакетах, в одном, или вообще в монолитном приложении.

Медитировать до просветления.


Виктор   (2004-12-06 12:57:00) [3]

Простите но этот прицип используется в плагинах, если Вы этого не знали!


DiamondShark   (2004-12-06 12:54:00) [4]

Для чего такое извращение: "часто используемые uses запихнул в общую библиотеку"?
Ведь эта самая библиотека будет зависима от пакетов, содержащих всё это часто используемое.


Виктор   (2004-12-06 12:52:00) [5]

Ну если Вас не ..рахает принцип построения проекта как же мне Вам объяснить >Зачем?


DiamondShark   (2004-12-06 12:49:00) [6]

Никак.
А зачем?


Виктор   (2004-12-06 12:46:00) [7]

Хорошо, тогда вопрос другой, как обойти подключения того модуля где указаны родные множества?


DiamondShark   (2004-12-06 12:37:00) [8]

Уважаемый, никого не трахает принцип построения проекта.
Для того, чтобы использовать значения перечислимого типа, модуль, в котором описан этот перечислимый тип, должен быть указан в uses.


Виктор   (2004-12-06 12:26:00) [9]

Уважаемые если Вы не понимаете принципа построения проекта с модульной организацией Plugin-ов зачем меня тритировать.
Я же все это время пытаюсь Вам объяснить что нет смысла в Bpl описывать uses-ы которые уже описаны в основном модуле Bpl, а основной модуль описывается в разделе requires.
Например работает же класс eFIBDatabase потомок класса TpFIBDatabase: его uses's FIBDatabase, pFIBDatabase описаны только в основной библиотеке(Bpl), а там где я создаю FIBDatabase:eFIBDatabase я объявляю только основной модуль и все.
А вопрос был характера наследования и приведения типов.


DiamondShark   (2004-12-06 12:12:00) [10]

Модуль, в котором описан тип, должен быть перечислен в uses.


ЮЮ   (2004-12-06 12:11:00) [11]

Ты читать умеешь?
uses <имя модуля, где этот перечислимый тип объявлен>


Виктор   (2004-12-06 12:01:00) [12]

Говорит нет такого значения свойтсва класса edxDBGrid которого я объявил предком класса TdxDBGrid.


DiamondShark   (2004-12-06 11:58:00) [13]


> но не могу его изменить поскольку оно перечисляемого типа.

Как меняем-то?
И что значит "не могу"? Ошибка компиляции? Ошибка времени исполнения? Результат не соответствует ожиданиям?


Виктор   (2004-12-06 11:54:00) [14]

Так вот про это я и говорю:
в библиотеке(bpl) которая в свою очередь использует другую билбиотеку (main.bpl) вижу свойство наследуемого класса, но не могу его изменить поскольку оно перечисляемого типа.
Вот его нужно как-то описать что-бы я смог менять значения в любом месте проекта.


DiamondShark   (2004-12-06 11:46:00) [15]

Да не трахает никого принцип проекта.
У тебя в каком-то месте чего-то "не видит".
Вот и показывай это место.


ЮЮ   (2004-12-06 11:46:00) [16]

>MAIN.BPL  : переобъявлются все классы и содержит все uses-ы

переобъявляться все классы и содаржать все uses-ы может, наверное, какой-нимудь MAIN.Pas

>sub_lib.bpl: по характеру проекта должен использовать то, что обозначено в MAIN-е.

но для этого всё равно в его uses должны указываться реальные модули, где впервые объявлены перечислимые типы, а не просто main. MAIN.BPL просто обеспечивает наличие всех модулей, но MAIN.pas никак не избавит от необходимости их упоминания в uses.


Виктор   (2004-12-06 11:43:00) [17]

-repeatedly-
А принцип проекта заключается в том, что все часто используемые функции, модули, константы и пр. выносятся в общую библиотеку которой пользуются другие модули.


DiamondShark   (2004-12-06 11:37:00) [18]

Ну и при чём тут bpl?

Тексты взаимозависимых модулей можно показать?
Хотя бы то место, где "не увидел"?


Виктор   (2004-12-06 11:32:00) [19]

Project.exe
 -> MAIN.BPL  : переобъявлются все классы и содержит все uses-ы
 -> sub_lib.bpl: по характеру проекта должен использовать то, что обозначено в MAIN-е.


DiamondShark   (2004-12-06 11:23:00) [20]

Тип описан в interface модуля?
Модуль в uses указан?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо