powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Strict private
20 сообщений из 95, страница 4 из 4
Strict private
    #39615171
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без генериков можно сделать если TEnumeratorField поместить внутрь TFields.
type
TFields = class
public
type
TEnumeratorFields = class
property A: TFields
end;
end;
...
Рейтинг: 0 / 0
Strict private
    #39615173
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteЭто называется некорректно спроектированная архитектура.
То что вы написали, называется, как умею так и пишу...

+2

X-Cite,

Человеку, который хотя бы пытается использовать шаблоны, это объяснять не надо.
А тем кто делает так всю жизнь, т.е. настоящие специалисты с 15 лет стажа - ты ничего объяснишь, и потратишь время впустую.
Ну и далее, как обычно, попытаются привести примеры.

Да, к сожалению, Delphi - позволяет делать много говнокода. Циркулярные ссылки, доступ к приватным элементам и много ещё чего.
...
Рейтинг: 0 / 0
Strict private
    #39615178
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДА как ты реализуешь два класса в раздельных модулях, чтобы в каждом классе было поле типа другого класса?

Я не буду такого реализовывать.
Приведённый пример с циркулярной ссылкой:
автор1. Для работы лампочки нужна электростанция.
2. Для работы электростанции нужна лампочка.
3. Друг без друга они не работают. Вилок не предусмотренно разработчиком.

Как хорошо, что во время ГОЭЛРО не знали Делфи.

Ну и далее пытается доказать, гениальность и неизбежность такого подхода. И компилятор Делфи этому не препятствует.
...
Рейтинг: 0 / 0
Strict private
    #39615181
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite...Если выделить абстракцию Перечислитель в абстрактный класс...

Ты задачу не решил, ты просто "заболтал" ее.
...
Эта ( 21257210 ) "проблема" (создание двух классов с циркулярными ссылками) перестает быть проблемой всего лишь после помещения обоих классов в общий модуль.
И сразу можно не ныть про генетики и неправильную архитектуру. Не нужно генерить говнокод, называя его паттернами, чтобы вытянуть себя за волосы из болота.
Можно просто работать. Но при этом порождая гигантских объемов модули и помня о странном превращении (неполном, кстати) private в public в рамках общего модуля. Что мы и наблюдаем в том же DB.pas.

Исключительно из-за рукожопости создателей delphi.
...
Рейтинг: 0 / 0
Strict private
    #39615189
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, изменение защищённости private членов в рамках модуля менять чревато потерей совместимости со старыми библиотеками. Что тут сделаешь.
Но что мешает за столько лет решить "проблему" циклических ссылок? Вот в C# этот косяк поправили довольно быстро, ну то Майкрософт, они богатые и могут позволить себе заботиться о комфорте пользователей.
А тут средства вкладываются в FMX и прочий хлам и на все не хватает.
Пользователям дельфей остаётся либо делать умные лица и рассказывать про паттерны (которые, сколько не надувайся, все равно не решают проблемы циркулярных ссылок), либо тупо создавать безобразно раздутые модули.
...
Рейтинг: 0 / 0
Strict private
    #39615196
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

Да нормально это в дельфи, именно под это среда и заточена. С отдельными файлами больше гемора в редакторе. strict просто добавляет дополнительные удобства.

Правда периодически, появляются отдельные личности, которые тащут реализации костылей типа Singleton-а из других языков.
...
Рейтинг: 0 / 0
Strict private
    #39615239
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeс постоянным расширением фуфнкционала

Какой внезапно правильный термин

Для всех спорящих, товарищ Сталин уже давно сказал, что марксизм не догма, а руководство к действию :)
...
Рейтинг: 0 / 0
Strict private
    #39615367
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

Отличная противоположность - каждый класс в своём модуле. Как-то пробовал такое отлаживать в плюсах. После 30-го +- открытого модуля я окончательно и бесповоротно потерялся. Спасибо, не надо.
...
Рейтинг: 0 / 0
Strict private
    #39615396
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonчччД,

Отличная противоположность - каждый класс в своём модуле. Как-то пробовал такое отлаживать в плюсах. После 30-го +- открытого модуля я окончательно и бесповоротно потерялся. Спасибо, не надо.
Крайности всегда уродливы. Только в Delphi крайности "все в одном" избежать невозможно.
А в C#/++ можно и так и эдак и вообще как хочешь.
...
Рейтинг: 0 / 0
Strict private
    #39615412
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaonчччД,

Отличная противоположность - каждый класс в своём модуле. Как-то пробовал такое отлаживать в плюсах. После 30-го +- открытого модуля я окончательно и бесповоротно потерялся. Спасибо, не надо.
Особенно учитывая, что в плюсах на каждый модуль обычно по ДВА файла...
...
Рейтинг: 0 / 0
Strict private
    #39615446
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2...
Особенно учитывая, что в плюсах на каждый модуль обычно по ДВА файла...
А в Delphi на каждую форму еще и dfm, а в Америке негров линчуют. :)
...
В C++ нет пока настоящих модулей. Но идет работа по их внедрению в язык, некоторые компиляторы уже поддерживают..
Правда, в последний стандарт их собирались включить, но почему-то решили чуть отложить. Но в составе MSVS уже компилятор их понимает и включены стандартные библиотеки, построенные по принципам модульности.
...
Рейтинг: 0 / 0
Strict private
    #39615494
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Было бы неплохо иметь задекларированный потайной доступ к приватным объектам

RTTI же! У меня в проекте есть потомок TImage, которому в некоторых случаях нужно рисовать на "честной" канве, которая находится у родителя в private

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
constructor TStickerImage.Create(AOwner: TComponent);
var
  RttiContext: TRttiContext;
  RttiType: TRttiType;
  RttiField: TRttiField;
begin
  inherited Create(AOwner);
  FStickerImage := nil;
  RttiContext := TRttiContext.Create;
  try
    RttiType := RttiContext.GetType(TGraphicControl);
    RttiField := RttiType.GetField('FCanvas');
    FOriginCanvas := RttiField.GetValue(Self).AsType<TCanvas>;
  finally
    RttiContext.Free
  end
end;
...
Рейтинг: 0 / 0
Strict private
    #39615498
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2учитывая, что в плюсах на каждый модуль обычно по ДВА файлада не, это сугубо по вкусу автора. масса либ существующих целиком в хедэрах
...
Рейтинг: 0 / 0
Strict private
    #39615503
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanВасилий №2учитывая, что в плюсах на каждый модуль обычно по ДВА файлада не, это сугубо по вкусу автора. масса либ существующих целиком в хедэрах

а функции в хедерах часом не инлайнятся автоматом?
...
Рейтинг: 0 / 0
Strict private
    #39615520
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейд,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
type
  TImageHelper = class helper for TGraphicControl
  public
    function GetFCanvas: TCanvas;
  end;

function TImageHelper.GetFCanvas: TCanvas;
begin
  with Self do
    Result := FCanvas;
end;
...
Рейтинг: 0 / 0
Strict private
    #39615523
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейдфункции в хедерах часом не инлайнятся автоматом?когда как
...
Рейтинг: 0 / 0
Strict private
    #39615681
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)> Да нормально это в дельфи, именно под это среда и заточена.
kealon(Ruslan)> С отдельными файлами больше гемора в редакторе.

Среда заточена под то, под что её затачивали.
VS как среда и C# как язык вполне себе удачно и
удобно позволяют работать без всяких проблем
с перекрестными ссылками, отладкой и пр.

А геморрой или нет - на этот счёт есть разные
мнения и не их (разработчиков IDE и языка)
собачье дело решать, кому как удобнее, пусть
каждый сам для себя решает/выбирает.

Вернее, с т.з. бизнеса, конечно, вполне их право -
"не хочешь - не покупай, иди на C#" - но с т.з.
удобств и пр. - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39615748
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

гм, сравнивать возможности мелкой компании с MS как-то некорректно, что было актуально то и пилили
н-р, CodeExplorer от 7-ки до последних версий практически не поменялся, если скакать по файлам - работать с ним практически невозможно.
...
Рейтинг: 0 / 0
Strict private
    #39615795
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейдkealon(Ruslan)Было бы неплохо иметь задекларированный потайной доступ к приватным объектам
RTTI же! У меня в проекте есть потомок TImage, которому в некоторых случаях нужно рисовать на "честной" канве, которая находится у родителя в private

Аналогичный по смыслу ответ электрика с опытом 20 лет:
авторВ моём проекте есть лампочка, и в некоторых случаях нужно пробраться на электростанцию, что бы её включить.
...
Рейтинг: 0 / 0
Strict private
    #39616158
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)> гм, сравнивать возможности мелкой компании с MS как-то некорректно

Я в этих вопросах ни гу-гу, но думаю что это не столь неразрешимая и
трудоемкая [под]задача, не пару человеко-месяцев максимум. В самом
крайнем случае, если своих мозгов не хватает - можно было бы идею
подсмотреть в готовых реализациях.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20 сообщений из 95, страница 4 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Strict private
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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