powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Классовые конструкторы/деструкторы дженериков...
8 сообщений из 33, страница 2 из 2
Классовые конструкторы/деструкторы дженериков...
    #40012321
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Virtual Student,

И зачем было делать так сложно?

Эх, если бы можно было проще...
Я сам придерживаюсь принципа - "делай попроще".
Этот софт - не тот случай.
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012336
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual Student
Так оно везде и сделано!
Эффект сохраняется...

Ну да, компилятор не считает это использованием. Это же декларация псевдонимов. Тогда, можно сделать фиктивные вызовы в секции инициализации:
Код: pascal
1.
2.
initialization
 TMyClass<Byte>.Create.Free;


Чтобы компилятор увидел использование типов, но тогда вообще нет смысла делать конструкторы классов, можно обойтись приватными методами инициализации.

Virtual Student
Но инициализируются не TMyClassWithByte и TMyClassWithString, а TMyClass<Byte> и TMyClass<String>

Да, так и должно быть т.к. первые это псевдонимы типов, а реальный тип это специализированный дженерик.
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012481
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual Student,

Как решил то в итоге?
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012514
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kazantsev Alexey
Virtual Student
Так оно везде и сделано!
Эффект сохраняется...

Ну да, компилятор не считает это использованием. Это же декларация псевдонимов. Тогда, можно сделать фиктивные вызовы в секции инициализации:
Код: pascal
1.
2.
initialization
 TMyClass<Byte>.Create.Free;


Чтобы компилятор увидел использование типов, но тогда вообще нет смысла делать конструкторы классов, можно обойтись приватными методами инициализации.

Virtual Student
Но инициализируются не TMyClassWithByte и TMyClassWithString, а TMyClass<Byte> и TMyClass<String>

Да, так и должно быть т.к. первые это псевдонимы типов, а реальный тип это специализированный дженерик.


{$STRONGLINKTYPES ON} - может помочь

Но иногда надо только конкретный класс поместить, поэтому есть две RSP где мы просим об этом.
https://quality.embarcadero.com/browse/RSP-18389
https://quality.embarcadero.com/browse/RSP-23777
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012529
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite
{$STRONGLINKTYPES ON} - может помочь

А может и не помочь:
http://docwiki.embarcadero.com/RADStudio/Sydney/en/Strong_link_types_(Delphi) This directive affects how the final EXE or DLL is linked. To work reliably, the directive should be in the main program or library source (.dpr). It only affects programs (EXEs) and libraries (DLLs), not packages (BPLs) .
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012545
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Virtual Student,

Как решил то в итоге?

Реализовал костыль с глобальным управлением этими ресурсами...

Т.е. при обращении к объектам, которые должны принадлежать конкретному классу, метод лезет в "менеджер классовых ресурсов", из словаря, по классу, получает ссылку на нужный объект. При этом объекты создаются один раз, вызовом отдельной классовой процедуры инициализации, и размещаются в глобальном потоконезависимом "менеджере".

Но мне не нравиться, что для поиска по каталогу, мне нужно перед этим искать сам каталог по соответствию нужному классу в словаре...
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012602
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual Student,

А ты кешируешь результат поиска в конечном классе?
...
Рейтинг: 0 / 0
Классовые конструкторы/деструкторы дженериков...
    #40012799
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Virtual Student,
А ты кешируешь результат поиска в конечном классе?

Результат поиска - один элемент или список из, допустим, каталога. А сам каталог, - это и есть по сути кэш.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Классовые конструкторы/деструкторы дженериков...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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