![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Декларация и исполнение процедур/функций [D7]
cobalt © (2012-10-31 16:49:00)А не подскажут ли блаародные доны,
если я в interface задаю декларацию процедуры,
а в implementation опускаю её параметры (никаких overload нет и не предвидится в принципе)
есть ли какие грабли?
Дмитрий Белькевич (2012-12-20 19:21:00) [1]Купили, кстати, на днях. Полезный эксперт.
jack128 (2012-12-19 12:05:00) [2]
> Если уж советуете что-то, не коверкайте название до неузнаваемости
я и не коверкаю. Это сокращение от разработчиков этого расширения. В частности именно так ("MMX")называется пункт меню в дельфе после установки эксперта.
Дмитрий Белькевич (2012-12-11 00:43:00) [3]
> Если уж советуете что-то, не коверкайте название до неузнаваемости
http://www.tdelphiblog.com/2011/06/opisanie-modelmaker-code-explorer.html
Бодрый Яр (2012-12-07 11:52:00) [4]
> https://www.google.com/search?q=delphi+MMX+Extensions
Если уж советуете что-то, не коверкайте название до неузнаваемости
jack128_ (2012-11-02 10:28:00) [5]
> Интел делает пасхальные яйца для Дельфей? )))
https://www.google.com/search?q=delphi+MMX+Extensions
Rouse_ (2012-11-01 17:39:00) [6]
> то же самое будет если сделать просто protected, но разместить
> TDescendant и TAncestor в разных юнитах
Да это понятно, просто я шерстил вчера хелп, пудово там видел в свое время описание strict protected где было написано примерно следующее, что доступ в наследниках есть к свойствам методам и переменным, про типы там небыло ничего сказано. Воть искал и не нашел, в текущем хелпе вообще strict блин не описывается...
bems (2012-11-01 17:32:00) [7]
> Когда впервые с таким столкнулся решил что типы из стрикт
> секций не поддерживаются компилером и попросту не стал шаманить.
> ..
собственно strict тут не при чем
то же самое будет если сделать просто protected, но разместить TDescendant и TAncestor в разных юнитах
cobalt (2012-11-01 16:03:00) [8]> jack128_ (01.11.12 13:49) [23]
Интел делает пасхальные яйца для Дельфей? )))
jack128_ (2012-11-01 13:49:00) [9]
> Например, мне пришлось исключать глобальную переменную в
> одном модуле, и перетаскивать её в параметры функций.
MMX Extensions нужно юзать.
меняешь в интерфейсной части декларацию метода, жмешь "Ctrl + Alt + Y" - и у тебя автоматом меняется сигнатура в implementation
Rouse_ (2012-11-01 11:28:00) [10]А все - понял о чем ты.
В таком виде работает: procedure TDescendant.Method{Param: TAncestor.TNested};
Ну чего не знал - того не знал.
Когда впервые с таким столкнулся решил что типы из стрикт секций не поддерживаются компилером и попросту не стал шаманить...
Rouse_ (2012-11-01 10:43:00) [11]
> bems © (31.10.12 23:15) [18]
Ну какой-же RTFM-то, код же не рабочий, о чем я и говорил :)
[DCC Error] Project1.dpr(23): E2362 Cannot access protected symbol TAncestor.TNested
cobalt (2012-11-01 09:51:00) [12]
> Rouse_ © (31.10.12 22:48) [9]
> > Cobalt © (31.10.12 22:27) [7]
> > Например, мне пришлось исключать глобальную переменную в
> > одном модуле, и перетаскивать её в параметры функций.
> Эвона как - шикарный вид...
Наследие, Шурик :-)
icWasya (2012-11-01 09:09:00) [13]Так весь юнит windows так устроен.
bems (2012-10-31 23:15:00) [14]
> стрикт на то и стрикт - он доступен только в пределах класса,
> если о нем знает наследник - это уже не стрикт :)
неверно
strict protected отличается от protected тем что закрывает доступ другому коду в пределах юнита, но оставляет при этом доступ наследникам
это "правильный" protected, в то время как классический вариант кроме доступа наследникам даёт еще некое подобие "дружественных" отношений со всем кодом в том же юните.
короч rtfm
Rouse_ (2012-10-31 23:11:00) [15]
> нормальное использование полиморфизма
стрикт на то и стрикт - он доступен только в пределах класса, если о нем знает наследник - это уже не стрикт :)
bems (2012-10-31 23:05:00) [16]
> если это работает - это не ваше достижение, это наша недоработка
почему? нормальное использование полиморфизма
Rouse_ (2012-10-31 23:03:00) [17]
> strict private метод может вызываться из публичного
Может
> но у публичного при этом не быть параметра типа объявленного
> как strict private
Может
> А в моём примере метод виртуальный, поэтому вызываться он
> может еще в TAncestor
Здесь ситуация (я не проверял - не скажу по поводу компилябельности кода) такого плана, если это работает - это не ваше достижение, это наша недоработка :)
bems (2012-10-31 23:00:00) [18]
> strict private метод может вызываться из публичного, но
> у публичного при этом не быть параметра типа объявленного
> как strict private
strict protected конечно же
bems (2012-10-31 22:57:00) [19]strict private метод может вызываться из публичного, но у публичного при этом не быть параметра типа объявленного как strict private. А в моём примере метод виртуальный, поэтому вызываться он может еще в TAncestor
Я не думаю что мне здесь нужно приводить реальный сценарий использования такой конструкции, достаточно того что заявленная мной ситуация реально существует, и я это продемонстрировал
Rouse_ (2012-10-31 22:53:00) [20]
> метод не обязан быть публичным
А нафига нужны тогда вообще стрикт секции? :)