![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильное унаследование свойств классов. [D7, Win95/98, Win2k]
Виктор © (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 указан?