powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подключить только один юнит в прикладном коде
11 сообщений из 11, страница 1 из 1
Подключить только один юнит в прикладном коде
    #39958988
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго ) Сабж - цель; есть юнит с сustom-классом, есть юниты с его наследниками.

В публичном интерфейсе custom-класса используются типы из его же юнита, вроде того:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
unit uMySuperClass; 

type
  TMyOption = (opOne, opTwo, ...);
  TMyOptions = set ot TMyOption;

TCustomMyClass = class
public
  property MyOptions: TMyOptions read ... 
end;



В программе хочется подключать только юнит класса-наследника, но что делать с используемыми типами ?

Навскиду - два варианта:

1) лепить алиасы в каждом юните с наследником,
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
unit uMySubClass1;

uses
  uMySuperClass;

type
  TMyOptions = MySuperClass.TMyOptions;
  // и т.д. 


или

2) навертеть через fluent interface, типа
Код: pascal
1.
MyOptions.AddOne.AddTwo...



Может - что-нибудь ещё / иначе как-то поменять интерфейс custom-класса ?
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39958990
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типы вынести в отдельный модуль.
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39958991
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ma1tusВ программе хочется подключать только юнит класса-наследника, но что делать с
используемыми типами ?

Перехотеть и понять, что компилятор не в состоянии использовать типы без их определения.
При этом он не хочет собирать эти определения из целого дерева модулей, ограничиваясь
только непосредственно подключенными.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959003
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,
:(
необходимость вспоминать, что надо подключать... "что-то там еще ?" - это то, чего хотелось избежать / "объехать на какой-нибудь не самой кривой" :-) .
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959005
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

да, реальность сурова. Спасибо.
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959020
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ma1tus
необходимость вспоминать, что надо подключать... "что-то там еще ?" - это то, чего хотелось избежать / "объехать на какой-нибудь не самой кривой" :-) .

С такими замашками пора в руководители проектов метить.
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959023
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Пора, брат, пора (с)
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959037
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только с наследниками ИМХО.
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959111
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ma1tus
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
TCustomMyClass = class
public
  type
    TMyOption = (opOne, opTwo);
    TMyOptions = set ot TMyOption;
private
  FMyOptions: TMyOptions;
public
  property MyOptions: TMyOptions read ... 
end;


Длинно, но, собственно - по условию задачи )
Код: pascal
1.
MySubClass1.MyOptions := [TMySubClass.TMyOption.opOne, TMySubClass.TMyOption.opTwo];
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959218
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Только с наследниками ИМХО.
да, всё-таки - этот вариант; другие - "рвут шаблон".
...
Рейтинг: 0 / 0
Подключить только один юнит в прикладном коде
    #39959219
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Перехотеть и понять, что компилятор не в состоянии использовать типы без их определения.
При этом он не хочет собирать эти определения из целого дерева модулей, ограничиваясь
только непосредственно подключенными.

Тут недавно выяснилось что в случае инлайн переменных новый компилятор таки умеет использовать типы без их определения в uses.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подключить только один юнит в прикладном коде
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]