powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Strict private
95 сообщений из 95, показаны все 4 страниц
Strict private
    #39614279
Следует ли считать хорошей практикой использование strict private вместо private ?
...
Рейтинг: 0 / 0
Strict private
    #39614294
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет смысл использовать если ты делаешь платные компоненты и распространяешь в dcu
Мне кажется protected - самое то.
...
Рейтинг: 0 / 0
Strict private
    #39614297
SOFT FOR YOUИмеет смысл использовать если ты делаешь платные компоненты и распространяешь в dcu
Мне кажется protected - самое то.

При чем тут "protected и "распространение в dcu"? Речь о strict private .
...
Рейтинг: 0 / 0
Strict private
    #39614298
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ты делаешь классы исключительно для внутреннего потребления - сугубо пофиг.
У классов для сторонних пользователей любое private смердит, поскольку не позволяет
использовать полиморфизм ради которого (в том числе) классы и задумывались.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39614304
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактики,

Притом, что private вообще не нужен. Ни обычный, ни strict.
...
Рейтинг: 0 / 0
Strict private
    #39614310
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еретики... и private нужен, и strict. Я везде применяю strict, чтобы в подсказках лишние методы не маячили.
...
Рейтинг: 0 / 0
Strict private
    #39614320
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovУ классов для сторонних пользователей любое private смердит, поскольку не позволяет использовать полиморфизм ради которого (в том числе) классы и задумывались.

И каким же образом доступность кишок класса связана с полиморфизмом?

Вообще. Я вижу так: public и protected - это интерфейс, API. Менять его может быть затруднено и болезненно. А private - это внутренняя реализация, которую можно менять как вздумается. И без этой области свободных манипуляций внесение изменений в класс взрастит такой геморрой у разработчика, что ну вас нафиг с такими идеями.
...
Рейтинг: 0 / 0
Strict private
    #39614326
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2И каким же образом доступность кишок класса связана с полиморфизмом?

Приватные методы нельзя оверрайдить. К приватным полям нельзя достучаться. Изменить
поведение базового класса, автор которого злоупотреблял приватностью, невозможно.
Полиморфизм недоступен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39614330
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактикиСледует ли считать хорошей практикой использование strict private вместо private ?Следует
...
Рейтинг: 0 / 0
Strict private
    #39614335
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактикиСледует ли считать хорошей практикой использование strict private вместо private ?
Если у вас на каждый класс отдельный unit, то необязательно.
Если у вас более одного класса в модуле, и они могут пересекаться, то лучше strict.

Иначе от такого вы не будете защищены. К тому же IntelliSense не будет показывать мусор из strict private
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 TA = class
  private
    F1: string;
  end;

  TB = class
  private
    procedure Test(aA: TA);
  end;

{ TB }

procedure TB.Test(aA: TA);
begin
  aA.F1 := 'asd';
end;
...
Рейтинг: 0 / 0
Strict private
    #39614336
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактикиСледует ли считать хорошей практикой использование strict private вместо private ?Нет.
...
Рейтинг: 0 / 0
Strict private
    #39614348
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovПриватные методы нельзя оверрайдить. К приватным полям нельзя достучаться. Изменить
поведение базового класса, автор которого злоупотреблял приватностью, невозможно.
Полиморфизм недоступен.

Полиморфизм вполне себе доступен в рамках, отведенных для этого автором. Всё, что свыше этого, - от лукавого либо результат совсем уж убогой реализации. А вот доступ к кишкам класса куда вреднее. Например:
Код: pascal
1.
2.
3.
4.
5.
6.
 Tclass = class
 private 
  FSomeObj: TObject
 public
  property SomeObj: TObject read FSomeObj;
 end;


При этом FSomeObj всегда создается в конструкторе и потому предполагается, что всегда не nil. Но условному апологету безграничного полиморфизма не нравится доступ по свойству, и он использует FSomeObj. А потом автор понимает, что FSomeObj нужен далеко не всегда и не сразу, поэтому встраивает создание перед использованием, меняя объявление на
Код: pascal
1.
  property SomeObj: TObject read GetSomeObj;


И вот тут апологет ловит AV at address $000000 и идет курить бамбук.
...
Рейтинг: 0 / 0
Strict private
    #39614351
Действительно, странно противопоставлять полиморфизм механизмам инкапсуляции. :)
...
Рейтинг: 0 / 0
Strict private
    #39614360
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий №2Полиморфизм вполне себе доступен в рамках, отведенных для этого автором. Проблема в том, что автор, отдавая компоненты на сторону, обычно сам не знает, что именно может потребоваться перекрыть.
Мне пару раз приходилось переписывать штатные VCL-компоненты только лишь потому, что авторы не добавили директиву virtual в одном месте.
Даже в приведенном примере лучше сразу делать виртуальный геттер.
...
Рейтинг: 0 / 0
Strict private
    #39614371
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не просто же так частные поля делают. И закрывают информацию внутри класса. Так то можно, конечно, всё наружу или почти наружу вытащить, говоря - делайте что хотите, сломаете - ваши проблемы. Только, мне кажется, это плохой подход. Вообще. В крайнем случае можно сырцы поправить. А код без исходников лучше вообще не применять.
...
Рейтинг: 0 / 0
Strict private
    #39614377
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonВ крайнем случае можно сырцы поправить.Эта практика намного хуже, напрочь убивает идею сопровождения.
...
Рейтинг: 0 / 0
Strict private
    #39614384
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Соколинский БорисmakhaonВ крайнем случае можно сырцы поправить.Эта практика намного хуже, напрочь убивает идею сопровождения.
в реальной жизни гораздо быстрее исправить ошибку в исходниках,
чем бесконечно переписываться с аффтаром, который может бюыть вообще недоступен
...
Рейтинг: 0 / 0
Strict private
    #39614391
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator, это понятно.
Но как же бесит при этом муторная сверка исходников после обновления...
...
Рейтинг: 0 / 0
Strict private
    #39614392
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем противникам strict private рекомендую вспомнить о class sealed, он вообще явно запрещает любых наследников класса)))) шах и мат полиформизму и его безумным поклонникам))) strict private вызывает ненависть? храните все в public!)))
...
Рейтинг: 0 / 0
Strict private
    #39614394
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
asutp2всем противникам strict private рекомендую вспомнить о class sealed, он вообще явно запрещает любых наследников класса)))) шах и мат полиформизму и его безумным поклонникам))) strict private вызывает ненависть? храните все в public!)))
пиши процедурно, безумец, не стесняйся
...
Рейтинг: 0 / 0
Strict private
    #39614398
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorasutp2всем противникам strict private рекомендую вспомнить о class sealed, он вообще явно запрещает любых наследников класса)))) шах и мат полиформизму и его безумным поклонникам))) strict private вызывает ненависть? храните все в public!)))
пиши процедурно, безумец, не стесняйсяпочему же, я как раз сторонник классов, но считаю, что ВСЕГДА разрешать давать наследникам перекрывать ВСЕ свойства и методы мягко говоря неправильно. Так вообще можно дойти до того, что будет единственная ветка наследования класс1<-класс2<-класс3<-....<-класс9999999999999999
...
Рейтинг: 0 / 0
Strict private
    #39614400
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
asutp2defecatorпропущено...

пиши процедурно, безумец, не стесняйсяпочему же, я как раз сторонник классов, но считаю, что ВСЕГДА разрешать давать наследникам перекрывать ВСЕ свойства и методы мягко говоря неправильно. Так вообще можно дойти до того, что будет единственная ветка наследования класс1<-класс2<-класс3<-....<-класс9999999999999999
ты же назвал сторонников полиморфизма безумными
а ведь полиморфизм это другое, не то, что ты только что описал
...
Рейтинг: 0 / 0
Strict private
    #39614402
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буч - это голова. И Фаулер - это голова. Фаулер и Буч - это две головы. Читайте классиков, вопросы отпадут сами собой.
...
Рейтинг: 0 / 0
Strict private
    #39614407
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorasutp2пропущено...
почему же, я как раз сторонник классов, но считаю, что ВСЕГДА разрешать давать наследникам перекрывать ВСЕ свойства и методы мягко говоря неправильно. Так вообще можно дойти до того, что будет единственная ветка наследования класс1<-класс2<-класс3<-....<-класс9999999999999999
ты же назвал сторонников полиморфизма безумными
а ведь полиморфизм это другое, не то, что ты только что описаля назвал безумными не тех, кто адекватно использует различные области видимости в классах/необходимые элементы для перекрытия в зависимости от задачи, а тех, кто желает изменять все что вздумается наследному классу и ненавидит strict private))).
...
Рейтинг: 0 / 0
Strict private
    #39614410
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо как же бесит при этом муторная сверка исходников после обновления...

Дифф в помощь. Автоматический или руками пробежаться. Винмержем я, например, инди свожу за час-полтора. У меня правок десятка два мест. Шансов, что их добавят, я думаю, около нуля. Быстрее руками свести. Особенно если надо не часто.
...
Рейтинг: 0 / 0
Strict private
    #39614412
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
asutp2defecatorпропущено...

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

Дифф в помощь. Автоматический или руками пробежаться. Винмержем я, например, инди свожу за час-полтора. У меня правок десятка два мест. Шансов, что их добавят, я думаю, около нуля. Быстрее руками свести. Особенно если надо не часто.
я через Araxis Megre свожу, ещё быстрее получается
...
Рейтинг: 0 / 0
Strict private
    #39614416
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonДифф в помощь. Автоматический или руками пробежаться. Бесит не потому, что долго,
а потому, что идиотское занятие.
...
Рейтинг: 0 / 0
Strict private
    #39614543
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из одной мертвой галактики,

ИМХО нововведение хорошее, его действительно удобно использовать при рефакторинге, но одного его недостаточно.

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

по поводу задания\не задания виртуальности, ИМХО тут бы помогла реализация механизмов АОП - тогда бы эта проблема просто исчезла.

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

да, у всех.
...
Рейтинг: 0 / 0
Strict private
    #39614580
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Было бы неплохо иметь задекларированный потайной доступ к приватным объектам
1) Если такое понадобилось - плохо спроектированная архитектура.
2) Если приперло, есть RTTI
...
Рейтинг: 0 / 0
Strict private
    #39614608
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кмк, легче при обновлении сторонних библиотек накатить диффом элементарные изменения, нежели ловить подводные камни.
Если исходники есть - то можно и выстрелить себе в ногу, если очень хочется:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
TOrigClass = class
private
  FSomeField: SomeType;
end;

...

TOrigClassHack = class
public
  FSomeField: SomeType;
end;

TOrigClassHack(OrigClassObj).FSomeField := ...
...
Рейтинг: 0 / 0
Strict private
    #39614654
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citekealon(Ruslan)Было бы неплохо иметь задекларированный потайной доступ к приватным объектам
1) Если такое понадобилось - плохо спроектированная архитектура.
2) Если приперло, есть RTTI1 - о чём и речь, но наш мир не идеален, и это нужно очень часто, а изменить компонент возможности нет - зачем сопротивляться очевидному?
2 - ИМХО лечилка хуже болезни, так как ошибки в декларациях при динамическом исполнении невозможно поймать при компиляции. Пока самый адекватный способ это баг в компиляторе с " with self do " в хелпере
...
Рейтинг: 0 / 0
Strict private
    #39614694
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

Ок, переопределили метод, вытащили из текущей версии реализацию, добавили свой код. Пришла новая версия, в которой метод переписали. Что-то поменялось?
...
Рейтинг: 0 / 0
Strict private
    #39614698
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonСоколинский Борис,

Ок, переопределили метод, вытащили из текущей версии реализацию, добавили свой код. Пришла новая версия, в которой метод переписали. Что-то поменялось?
+1.

Вопросы видимости - в том числе вопросы протокола общения заказчика с пользователем.
То есть, если можешь и хочешь лезть в кишки, то без претензий к разработчику насчет того, что в очередном апдейте изменилась внутренняя реализация.
...
Рейтинг: 0 / 0
Strict private
    #39614731
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonОк, переопределили метод, вытащили из текущей версии реализацию, добавили свой код. Пришла новая версия, в которой метод переписали. Что-то поменялось? Не понял вопроса.
...
Рейтинг: 0 / 0
Strict private
    #39614744
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,

Перегрузили виртуальный метод, утащили код, частично поменяли поведение. А его поведение опять поменялось в оригинальном классе. И опять сводить? :) Сильно ли тут перегрузка поможет?
...
Рейтинг: 0 / 0
Strict private
    #39614777
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,
Эта ситуация принципиально проще. В идеале:
1. Смотрим в whatsnew отличия версий и решаем, нужно ли что-то менять у себя.
2. Если нужно - сравниваем свою надстройку с измененной базовой реализацией и выбираем одно из 3 решений
2а. оставить все как есть
2б. убрать собственный фикс если он уже присутствует в штатной версии.
2в. переписать надстройку.
Собственно, только п. 2в может потребовать каких-то осмысленных действий. Но это намного проще тотального сличения исходников даже с помощью соответствующих инструментов.
...
Рейтинг: 0 / 0
Strict private
    #39614803
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жесть когда юзаешь крэкеры для доступа к приватам а в новой версии layout класса поменялся и новые члены воткнули не в конец
...
Рейтинг: 0 / 0
Strict private
    #39614809
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan,

или вообще все кишки переписали к черту и ни одного старого private члена не оставили. А то и класс-адаптер подсунули, вместо старого, а реализацию в каком-нибудь вебсервисе заховали. Нефик лезть в private, то есть.
...
Рейтинг: 0 / 0
Strict private
    #39614814
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДНефик лезть в private, то естьв неидеальном мире увы приходится
...
Рейтинг: 0 / 0
Strict private
    #39614815
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борисmakhaon,
Эта ситуация принципиально проще. В идеале:
1. Смотрим в whatsnew отличия версий и решаем, нужно ли что-то менять у себя.
2. Если нужно - сравниваем свою надстройку с измененной базовой реализацией и выбираем одно из 3 решений
2а. оставить все как есть
2б. убрать собственный фикс если он уже присутствует в штатной версии.
2в. переписать надстройку.
Собственно, только п. 2в может потребовать каких-то осмысленных действий. Но это намного проще тотального сличения исходников даже с помощью соответствующих инструментов.при таком подходе нужно использовать исключительно собственноручно написанные классы и компоненты...
...
Рейтинг: 0 / 0
Strict private
    #39614816
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2нужно использовать исключительно собственноручно написанные классы и компонентыв идеале с собственным компайлером и на своей оси
...
Рейтинг: 0 / 0
Strict private
    #39614820
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanasutp2нужно использовать исключительно собственноручно написанные классы и компонентыв идеале с собственным компайлером и на своей оси однозначно :)
...
Рейтинг: 0 / 0
Strict private
    #39614824
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteЕсли у вас более одного класса в модуле, и они могут пересекаться, то лучше strict.

+1
Когда 2 и более класса в одном модуле, они получают доступ к своим private элементам.
Что бы это исправить, ввели новое словечко - strict private
По идее, любой private и так должен быть strict private. Не знаю, о чём думало Ембрякоделло или как её там по имени.
Если ты не разрабатываешь компоненты, то лучше использовать 1 модуль=1 класс.

Private в Delphi - это недоразумение.
А пример от X-Cite - это хороший пример того говнокода, который потом получается.
...
Рейтинг: 0 / 0
Strict private
    #39614981
Василий №2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery_BЕсли ты не разрабатываешь компоненты, то лучше использовать 1 модуль=1 класс.
Явист детектед))
...
Рейтинг: 0 / 0
Strict private
    #39614988
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B...
Если ты не разрабатываешь компоненты, то лучше использовать 1 модуль=1 класс.
...

А как ты реализуешь два класса в раздельных модулях, чтобы в каждом классе было поле типа другого класса?
Это не C#, тут от циклических ссылок в uses компилятор благим матом вопит.
Думаешь, в дельфи монструозных размеров модули создают из-за гигантофилии?
...
Рейтинг: 0 / 0
Strict private
    #39614991
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BX-CiteЕсли у вас более одного класса в модуле, и они могут пересекаться, то лучше strict.

+1
Когда 2 и более класса в одном модуле, они получают доступ к своим private элементам.
Что бы это исправить, ввели новое словечко - strict private
По идее, любой private и так должен быть strict private. Не знаю, о чём думало Ембрякоделло или как её там по имени.
Если ты не разрабатываешь компоненты, то лучше использовать 1 модуль=1 класс.

Private в Delphi - это недоразумение.
А пример от X-Cite - это хороший пример того говнокода, который потом получается.
дурная мысль заразна, гон на Embarcadero тоже не месту
...
Рейтинг: 0 / 0
Strict private
    #39614992
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДValery_B...
Если ты не разрабатываешь компоненты, то лучше использовать 1 модуль=1 класс.
...

А как ты реализуешь два класса в раздельных модулях, чтобы в каждом классе было поле типа другого класса?
Это не C#, тут от циклических ссылок в uses компилятор благим матом вопит.
Думаешь, в дельфи монструозных размеров модули создают из-за гигантофилии?

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


А как ты реализуешь два класса в раздельных модулях, чтобы в каждом классе было поле типа другого класса?
Это не C#, тут от циклических ссылок в uses компилятор благим матом вопит.
Думаешь, в дельфи монструозных размеров модули создают из-за гигантофилии?

Это решается разделением абстракции от реализации
Код покажи.
...
Рейтинг: 0 / 0
Strict private
    #39615034
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
чччДX-Citeпропущено...


Это решается разделением абстракции от реализации
Код покажи.
ща он интерфейсов накидает
...
Рейтинг: 0 / 0
Strict private
    #39615049
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorща он интерфейсов накидает

Зачем, если вдруг требуется циклическая зависимость, то это обычно необходимо только, если зависимый должен уведомлять владельца о чем либо. Например коллекция и элементы.. Тогда это Наблюдатель (шаблон проектирования)

Если вдруг надо выполнить работу которую делает владелец из зависимого, то это уже некорректное проектирование и надо произвести композицию, выделить поведение в отдельную реализацию и передать ее как ссылку из владельца в зависимый элемент.
Например это можно сделать через Мост (шаблон проектирования) При чем в этом случае можно обойтись без интерфейсов.

В первом случае тоже можно обойтись без интерфейсов, если делегировать принцип наблюдения другим классам. Но это будет слегка
...
Рейтинг: 0 / 0
Strict private
    #39615056
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шо тут показывать. Сделать одному из классов предка в отдельном модуле, да и всё. И в оба модуля подключить этот доп. модуль. Ну а во втором классе тип свойства указать как этот предок.
Всё.
...
Рейтинг: 0 / 0
Strict private
    #39615062
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citedefecatorща он интерфейсов накидает

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

При чем, если уведомлять коллекцию надо только для того, чтобы она уведомила другие элементы, то паттерн Наблюдатель тут не нужен.
Здесь поможет Посредник
...
Рейтинг: 0 / 0
Strict private
    #39615067
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteПри чем, если уведомлять коллекцию надо только для того, чтобы она уведомила другие элементы, то паттерн Наблюдатель тут не нужен.
Здесь поможет Посредник если перевести на русский, то это звучит как "фигачь OnClick, OnDraw, .... и ... выё..."
...
Рейтинг: 0 / 0
Strict private
    #39615087
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citedefecatorща он интерфейсов накидает

... Например...

Код давай.
...
Рейтинг: 0 / 0
Strict private
    #39615088
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДX-Citeпропущено...


... Например...

Код давай.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
unit U1;
interface
type

  TClass_1 = class
    public 
      f : TClass_2
  end;

implementation
end.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
unit U2;
interface
type

  TClass_2 = class
    public 
      f : TClass_1
  end;

implementation
end.



Дополни код, чтобы он компилировался.
...
Рейтинг: 0 / 0
Strict private
    #39615092
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорош троллить человека. :)
Ну третий модуль добавь, например.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39615093
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...паттерн Наблюдатель...Посредник...
И го'вна от GoF тоже не помогут, никак.
...
Рейтинг: 0 / 0
Strict private
    #39615096
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам...
Ну третий модуль добавь, например.


И чем это поможет? В Delphi уже позволена Forward declaration классов за пределами модуля?
...
Рейтинг: 0 / 0
Strict private
    #39615098
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД> И чем это поможет?


От circular unit reference спасёт, ссылаться на третий модуль позволит.

P.S. Выключи дурочку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39615110
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДчччДпропущено...


Код давай.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
unit U1;
interface
type

  TClass_1 = class
    public 
      f : TClass_2
  end;

implementation
end.


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
unit U2;
interface
type

  TClass_2 = class
    public 
      f : TClass_1
  end;

implementation
end.



Дополни код, чтобы он компилировался.

Это называется некорректно спроектированная архитектура. Так нельзя писать. Для этого необходимо произвести композицию реализации с выделением абстракции...
То что вы написали, называется, как умею так и пишу... А сама среда еще и потворствует не думать, а писать как умею...
Вся суть RAD в том, чтобы быстро выпускать небольшие продукты не рассчитывая на расширяемость...
Когда проект или фреймворк превращается в долгоиграющий с постоянным расширением фуфнкционала растянутым во времени, такая практика приводит к печальным последствиям... Например к словам проще все переписать, чем вникнуть...
...
Рейтинг: 0 / 0
Strict private
    #39615118
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite...некорректно спроектированная архитектура...нельзя...необходимо произвести композицию реализации с выделением абстракции...

Эту скучную песенку постоянно пели и шарписты, пока в очередной версии им перекрестные ссылки не разрешили.
Теперь они просто действительно разносят классы по модулям. Или не разносят, в зависимости от настроения.
Как и си-плюс-плюсники и другие программисты (кроме дельфистов, конечно, которые не просто катят квадратное колесо, а еще и нахваливают дорожные ямы).

А так-то, да, так писать нельзя, полностью согласен. В Delphi. Не скомпилируется ибо.
Исключительно из-за рукожопости разработчиков компилятора Delphi.
...
...
...
Ну так что - будет код или ля-ля про паттерны дальше будешь?
...
Рейтинг: 0 / 0
Strict private
    #39615119
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Циркулярные" ссылки, конечно, не "перекрестные". :)
...
Рейтинг: 0 / 0
Strict private
    #39615120
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДНу так что - будет код или ля-ля про паттерны дальше будешь?
Окей.. Чтобы написать код, мне нужна цель для которой необходимо так сделать...
Ставь цель: например TA с помощью FB должен сделать то, а TB с помощью FA должен сделать это.. А я что-нибудь придумаю...
...
Рейтинг: 0 / 0
Strict private
    #39615122
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамчччД> И чем это поможет?


От circular unit reference спасёт, ссылаться на третий модуль позволит.

P.S. Выключи дурочку.

Может, хоть ты код покажешь?
21257210 - допиши несколько строк, трудно тебе, что ли.
...
Рейтинг: 0 / 0
Strict private
    #39615128
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД> Может, хоть ты код покажешь?
> 21257210 - допиши несколько строк, трудно тебе, что ли.

Какой-то ты вредный в ночь со вторника на четверг.
Не трудно, а лень. Ну, например, так

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  TClass_2 = class(TClass_2_Base)
    public
      f : TClass_1;
  end;

  TClass_1 = class
    public
      f : TClass_2_Base;
  end;

  Unit3:
  TClass_2_Base = class
  end;



Давай, начинай рассказывать, что это некошерно, лишний модуль и класс
и вообще тебе обязательно ссылка на потомок нужна, а не на базовый.
Я заранее со всем соглашусь, чтобы два раза не вставать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39615131
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteчччДНу так что - будет код или ля-ля про паттерны дальше будешь?
Окей.. Чтобы написать код, мне нужна цель для которой необходимо так сделать...
Ставь цель: например TA с помощью FB должен сделать то, а TB с помощью FA должен сделать это.. А я что-нибудь придумаю...

Вот тебе цель, вместе с ТЗ: 21257210
Ты же не обезьянка, а программист, должен уметь решать абстрактные задачи. Тем более, я тебя за язык не тянул, ты сам вызвался.

А если у тебя вопросы по примерам - открой, к примеру, файл DB.pas - там их море.
И заодно задумайся - от чего там в начале модуля такие смешные строчки:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
type

{ Forward declarations }

  TFields = class;
  TField = class;
  TObjectField = class;
  TDataLink = class;
  TDataSource = class;
  TDataSet = class;
  TFieldDefs = class;
  TIndexDefs = class;
...
...



Ты действительно думаешь, в этом модуле более 10тыс исключительно из любви к искусству? Нет, всего лишь потому, что классы. определенные в модуле, имеют члены с типом других классов, циркулярно.
...
Рейтинг: 0 / 0
Strict private
    #39615132
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Конечно, от этого давно пора избавиться.
Равно как и от невозможности нормально код
класса по модулям разносить.

P.P.S. Чего у нас только нет! И этого у нас тоже нет... (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39615135
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамчччД> Может, хоть ты код покажешь?
> 21257210 - допиши несколько строк, трудно тебе, что ли.

Какой-то ты вредный в ночь со вторника на четверг.
Не трудно, а лень. Ну, например, так

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  TClass_2 = class(TClass_2_Base)
    public
      f : TClass_1;
  end;

  TClass_1 = class
    public
      f : TClass_2_Base;
  end;

  Unit3:
  TClass_2_Base = class
  end;



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


А давай "классовые" типы всегда типа TObject задавать - вот и нет проблемы, они ж все от него наследуются, и третий модуль не понадобится.
Что нам, трудно явно к нужному типу привести. Это и дисциплинирует, и вообще - модно, молодежно.
...
Рейтинг: 0 / 0
Strict private
    #39615136
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысла ругать дельфи нет: все равно ничего не исправишь, надо пользоваться тем, что есть.

Надо спать идти. Вот.
...
Рейтинг: 0 / 0
Strict private
    #39615137
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Strict private
    #39615140
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччДА если у тебя вопросы по примерам - открой, к примеру, файл DB.pas - там их море.
И заодно задумайся - от чего там в начале модуля такие смешные строчки:
Код: pascal
1.
2.
3.
type
{ Forward declarations }
  TFields = class;


Ты действительно думаешь, в этом модуле более 10тыс исключительно из любви к искусству? Нет, всего лишь потому, что классы. определенные в модуле, имеют члены с типом других классов, циркулярно.

Потому что криво спроектирована архитектура))))
берем пример TField

Код: pascal
1.
2.
3.
4.
{ Forward declarations }

  TFields = class;
  TField = class;



Это сделано из-за вот такого говнокода:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
{ TFieldsEnumerator }

  TFieldsEnumerator = class
  private
    FIndex: Integer;
    FFields: TFields;
  public
    constructor Create(AFields: TFields);
    function GetCurrent: TField;
    function MoveNext: Boolean;
    property Current: TField read GetCurrent;
  end;

{ TFields }

  TFields = class(TObject)
  private



Если выделить абстракцию Перечислитель в абстрактный класс, то TFieldsEnumerator можно будет объявить после TFields и TField и тогда не понадобится forward

А так сделано потому, что TFields унаследован от TObject а TField от TComponent, Хотя по сути TFields это некая коллекция (список, словарь и т.п.), следовательно если бы выделили ее в отдельную абстракцию...
Например вот так.. мне лень сделать это красивее...
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
 TAbstractStrangeField = class(TComponent)
  end;

  TAbstractStrangeCollection<T: TAbstractStrangeField> = class
  private
    function GetField(Index: Integer): T;
    procedure SetField(Index: Integer; const Value: T);
    function GetCount: Integer;
  public
    property Count: Integer read GetCount;
    property Fields[Index: Integer]: T read GetField write SetField; default;
  end;

  TAbstractFieldsEnumerator<T: TAbstractStrangeField> = class
  private
    FIndex: Integer;
    FFields: TAbstractStrangeCollection<T>;
  public
    constructor Create(AFields: TAbstractStrangeCollection<T>);
    function GetCurrent: T;
    function MoveNext: Boolean;
    property Current: T read GetCurrent;
  end;

  TField = class(TAbstractStrangeField)
  end;

  TConcrateEnumerator = class(TAbstractFieldsEnumerator<TField>)
  end;

  TFields = class(TAbstractStrangeCollection<TField>)
  public
    function GetEnumerator: TConcrateEnumerator;
  end;



Все работает
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TForm1.FormCreate(Sender: TObject);
var
  A: TFields;
  B: TField;
begin
  for B in A do
    ;
end;
...
Рейтинг: 0 / 0
Strict private
    #39615161
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Cite,
ну с генериками финт раньше нельзя было сделать

А теперь давай их все, как предлагают, выделим в отдельные модуля - итого выходит 6 модулей. Зашибись ...
...
Рейтинг: 0 / 0
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
95 сообщений из 95, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Strict private
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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