H>>>Много чего вообще есть... Есть, например, запрет на использование MS Trident (кажется так оно называется), ибо внутренняя секьюрити не позволяет. Будешь лисапед писать? Удачи.
M>>Да. Буду, если таковы условия заказчика.
H>Попробуй их хотя бы обосновать...
Про государственные конторы тебе уже тут говорили
M>>И писать, в частности, буду точно не надельфи, потому что неумение/нежелание добавить поддержку Юникода в полностью контролируемую тобой среду для меня поставило крест на этой технологии еще в 2003=м году
H>Проблема совершенно надумана Есть решение -- TNT, тебе мало? Я щас на .Net и Java крест поставлю за то, что нету у них нифига для XML-RPC/OpenGL/редактирования PDF (понимаешь маразматичность таких заявлений?)
Юникод — это базовое требование, в отличие от XML-RPC и прочих
M>>ЗЫ. Это я не по сотому разу спрашиваю. Я пытаюсь добиться четкого и ясного ответа В чем смысл "расширять" IUnknown, если класс, реализующий MyInterface, имеет право похерить все методы IUnknown?
H>Расширяется не IUnknown. Расширяется MyInterface декларацией IUnknown.
Зачем? Что нам это дает, кроме необходимости писать дополнительный код, который все равно нигде не нжен и нигде не участвует?
M>>Напиши, пожалуйста минимальный класс MyClass, который будет реализовывать MyInterface
H>Есть два варианта:
H>1. Реализует MyInterface (да-да, все методы -- это MyInterface). H>
H> TMyObject = Class(TObject, MyInterface)
H> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
H> function _AddRef: Integer; stdcall;
H> function _Release: Integer; stdcall;
H> Function SomeMethod : AnsiString;
H> End;
H>
Зачем мне реализовывать методы QueryInterface, _AddRef и _Release, если я их все равно в данном случае не буду использовать? Или это идеология такая — писать код ради кода? Почему я не могу написать:
MyInterface : Interface
function someMethod : AnsiString
end
MyClass : Class(TObject, MyInterface)
function someMethod : AnsiString
end
Захотели реализовать IUnknown? Пожалуйста:
MyInterface : Interface
function someMethod : AnsiString
end
MyClass : Class(TObject, MyInterface, IUnknown)
function someMethod : AnsiString
function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
function _AddRef: Integer; stdcall;
function _Release: Integer; stdcall;
end
M>Зачем мне реализовывать методы QueryInterface, _AddRef и _Release, если я их все равно в данном случае не буду использовать? Или это идеология такая — писать код ради кода? Почему я не могу написать:
M>
M>MyInterface : Interface
M> function someMethod : AnsiString
M>end
M>MyClass : Class(TObject, MyInterface)
M> function someMethod : AnsiString
M>end
M>
M>Захотели реализовать IUnknown? Пожалуйста: M>
M>MyInterface : Interface
M> function someMethod : AnsiString
M>end
M>MyClass : Class(TObject, MyInterface, IUnknown)
M> function someMethod : AnsiString
M> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
M> function _AddRef: Integer; stdcall;
M> function _Release: Integer; stdcall;
M>end
M>
M>Зачем плодить лишние сущности?
Вы, наверное, этого нигде не видели, но вам не приходило в голову, что _AddRef, _Release и QueryInterface могут быть реализованы по разному? Или вы хотите, чтобы была какая-то реализация по-умолчанию? Ну, так для этого и есть, например, TInterfacedObject. Его реализация такая, что он само-пристреливается, когда из видимости уходит его интерфейс. А если, например, мне не нужно такое поведение, я беру и аккуратно реализую IUnknown, как мне надо и когда мне надо.
А по дефолту зачем? Для этого есть TInterfacedObject, TContainedObject и т д.
Я не сделаю открытия, если скажу, что в каждом(!) нормальном проекте есть базовые классы типа TMyImplementInterfacedObject.
Здравствуйте, int64, Вы писали:
I>Здравствуйте, Mamut, Вы писали:
M>>Зачем мне реализовывать методы QueryInterface, _AddRef и _Release, если я их все равно в данном случае не буду использовать? Или это идеология такая — писать код ради кода? Почему я не могу написать:
M>>
M>>MyInterface : Interface
M>> function someMethod : AnsiString
M>>end
M>>MyClass : Class(TObject, MyInterface)
M>> function someMethod : AnsiString
M>>end
M>>
M>>Захотели реализовать IUnknown? Пожалуйста: M>>
M>>MyInterface : Interface
M>> function someMethod : AnsiString
M>>end
M>>MyClass : Class(TObject, MyInterface, IUnknown)
M>> function someMethod : AnsiString
M>> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
M>> function _AddRef: Integer; stdcall;
M>> function _Release: Integer; stdcall;
M>>end
M>>
M>>Зачем плодить лишние сущности?
I>Вы, наверное, этого нигде не видели, но вам не приходило в голову, что _AddRef, _Release и QueryInterface могут быть реализованы по разному? Или вы хотите, чтобы была какая-то реализация по-умолчанию?
Мне все равно, есть какая-то реализация по умолчанию или нет Я не могу поянть, зачем меня обязывают реализовывать эти функции, несмотря на то, что они имеют никакого смысла для какого-то данного объекта
I>А по дефолту зачем?
Вот и о том же Зачем, реализуя MyInterface я все равно должен (фактически) реализовать IUnknown, хотя от этого IUnknown мне ни холодно ни жарко?
Почему я не могу просто задекларировать интерфейс с методами, которые мне нужны, и не заморачивать себе голову реализацией дополнительных, никому не нужных методов?
Или.
Если я так или иначе фактически реализую интерфейс IUnknown, зачем мне дополнительно указывать, что я его реализую/не реализую? Вон они — методы из IUnknown, навязаные мне MyInterface'ом. Зачем они мне там? Так, чтобы лишнее место занимать?
Здравствуйте, squid, Вы писали:
S>>>>>много кому нужны. Windows SDK посмотри скока народу скачали. хотя забей, ты просто фанатек. тока не линукса а дельфы.
H>>>>Вывод ты сделал неправильный. Я повторюсь, Delphi для меня не фетишь. А ты критикуешь инструмент за то, на что он никогда не был ориентирован...
S>>>На возможность создания программ без ограничений как Visual C++ тот-же??? Супер. И на что тогда Delphi по твоему ориентирована?
H>>Всем давно известна ориентированность Delphi на RAD разработку клиентских приложений для работы с БД. Это, впрочем, не означает, что ничего другого на ней сделать нельзя. По этой причине Борланд и не развивал прочие направления. Косяк Борланда? Конечно косяк и еще какой. Благо, в настоящее время (после выделения CodeGear) просматриваются тенденции именно на развитие прочих областей (в блогах CodeGear'овцев и лиц приближенных все чаще мелькает MicroSV). Посему, надежда есть
S>чорт. а я совсем другой софт продаю. ушол вешаццо
Я в своей работе вообще только компилятором пользуюсь, да несколькими RTL классами (т.е. все остальное от VCL мне мало интересно), но истерик по этому поводу у меня нет
S>>>>>вот-вот. в том виде в котором они выложены на сайт при создании ActiveX — косяк. regsvr32 при регистрации тупо виснет. опять пришлось кучу времени на эту неадекватность потратить.
H>>>>Давай по шагам. Я попробую воспроизвести
S>>>Создаешь обычный визуальный компонент, подключаешь юнит GDI+, юзаешь из него какую-нибудь структурку, чтобы его как-нибудь задействовать, создаешь из этого компонента ActiveX с помощью мастера. Все. Будет висеть.
H>>Проверил на шестерке -- ничего не виснет, все отлично работает. Контрол отрисовывается GDI+.
S>ActiveX? Загадка...
Конечно ActiveX, ты же о нем говорил... Создал контрол от TCustomControl. Отрисовку сделал в GDI+. Потом сконвертил его в ActiveX контрол. Зарегистрировал (хоть средой, хоть regsvr32). Импортировал в среду. Бросил на форму. Компилирую. Запускаю. Ни каких висов нет.
S>>>Люди из progdigy на мой фикс никак положительно не отреагировали, потому что место которая я фиксил — фича а не бага
H>>Может и им воспроизвести не удалось...
S>Они и не пытались. Их ActiveX вообще не волнует. Главное в Delphi работает, и, как им кажется, это правильнее.
Как оказалось, оно и в ActiveX работает
S>>>А были-бы официальные хидеры от Борланд — было-бы кому писать, кому жаловаться. А так — типичный опенсорс — кушай что дали бесплатно и не жалуйся, мы на этом не зарабатываем.
H>>Ну не знаю... По UIB'у они весьма отзывчивы.
S>Не знаю, те же хидеры директшоу — перелопачиваешь форум и патчишь руками. В оригинальной версии правят раз в полгода.
Судя по changes.txt, обновляют они ее чуть не каждый месяц...
Re[25]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, gandjustas, Вы писали:
H>>Здравствуйте, gandjustas, Вы писали: H>>Аргумент, что надо Компрессоры, я так понимаю (GZip, BZip2 и пр.), тоже нафиг не нужны? G>gzip в .NET есть
Ну надо же Ладно, кончай придуриваться. Согласись, что был не прав
H>>В общем, сижу в своем болоте и квакаю в собственном хоре G>Продолжай
Посмотри на свой любимый Paint.Net, в окошке About. Три сторонних библиотеки заюзано для такого скромненького проекта. Кстати, эта гхм... хранит MRU миниатюры в реестре, да еще и в виде строки base64
H>>Чья-бы корова мычала... Открой для себя гугл и посмотри на циферки и список рекламных объявлений G>Ты бы сам почитал, а не циферки смотрел. Большенство компонентов — FTP и SMTP клиенты, которые при желании пишутся за час.
У тебя видимо гугль другой Куча компонентов, графики, гриды, всевозможные контролы... А сроки твои вообще умиляют...
H>>Мой личный опыт не согласуется со словами твоих товарищей (неожиданно пишущих под Delphi для вояк) G>Считай тебе больше повезло.
H>>Ну ты подумай. Ты же используешь эту хрень в качестве аргумента... G>Эти требования не я приидумал, причин не знаю.
Думается мне, что именно ты их и придумал...
H>>А недавно говорил, что на 2008 можно уже посмотреть будет... G>Версия 2008 года еще не вышла.
Ты в контексте разговора попробуй ответить. После добавления юникода в гуй и дженериков в язык, будет модерн?
Re[23]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, Mamut, Вы писали:
H>>>>Много чего вообще есть... Есть, например, запрет на использование MS Trident (кажется так оно называется), ибо внутренняя секьюрити не позволяет. Будешь лисапед писать? Удачи.
M>>>Да. Буду, если таковы условия заказчика.
H>>Попробуй их хотя бы обосновать...
M>Про государственные конторы тебе уже тут говорили
Да мне тут и про вояк говорили... Вот только говорители даже обосновать такие требования не могут
M>>>И писать, в частности, буду точно не надельфи, потому что неумение/нежелание добавить поддержку Юникода в полностью контролируемую тобой среду для меня поставило крест на этой технологии еще в 2003=м году
H>>Проблема совершенно надумана Есть решение -- TNT, тебе мало? Я щас на .Net и Java крест поставлю за то, что нету у них нифига для XML-RPC/OpenGL/редактирования PDF (понимаешь маразматичность таких заявлений?)
M>Юникод — это базовое требование, в отличие от XML-RPC и прочих
Что значит базовое? В языке оно есть очень давно. В гуй-библиотеке не поддерживается пока. Неприятный факт? Конечно неприятный. Но для кого? Для корпоративной системы его наличие или отсутствие не упирается ни в одну точку (а Delphi на что ориентирована?). А тем кому уперлось уже сказали про TNT.
Здравствуйте, Mamut, Вы писали:
M>>>ЗЫ. Это я не по сотому разу спрашиваю. Я пытаюсь добиться четкого и ясного ответа В чем смысл "расширять" IUnknown, если класс, реализующий MyInterface, имеет право похерить все методы IUnknown?
H>>Расширяется не IUnknown. Расширяется MyInterface декларацией IUnknown.
M>Зачем? Что нам это дает, кроме необходимости писать дополнительный код, который все равно нигде не нжен и нигде не участвует?
Что значит зачем? Правило языка. Любой интерфейс, если не указано иное, наследуется (но наследование осуществляется расширением декларации) от IInterface.
M>>>То есть, давай так. Вот интерфейс: M>>>
M>>>Напиши, пожалуйста минимальный класс MyClass, который будет реализовывать MyInterface
H>>Есть два варианта:
H>>1. Реализует MyInterface (да-да, все методы -- это MyInterface). H>>
H>> TMyObject = Class(TObject, MyInterface)
H>> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
H>> function _AddRef: Integer; stdcall;
H>> function _Release: Integer; stdcall;
H>> Function SomeMethod : AnsiString;
H>> End;
H>>
M>Зачем мне реализовывать методы QueryInterface, _AddRef и _Release, если я их все равно в данном случае не буду использовать? Или это идеология такая — писать код ради кода? Почему я не могу написать:
Ты можешь и не использовать, а вот компилятор использует, ссылки считает да интерфейсы получает...
M>
M>MyInterface : Interface
M> function someMethod : AnsiString
M>end
M>MyClass : Class(TObject, MyInterface)
M> function someMethod : AnsiString
M>end
M>
Можешь написать и так, только наследуйся от TInterfacedObject.
M>Захотели реализовать IUnknown? Пожалуйста: M>
M>MyInterface : Interface
M> function someMethod : AnsiString
M>end
M>MyClass : Class(TObject, MyInterface, IUnknown)
M> function someMethod : AnsiString
M> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
M> function _AddRef: Integer; stdcall;
M> function _Release: Integer; stdcall;
M>end
M>
M>Зачем плодить лишние сущности?
Это ты сейчас предлагаешь писать лишнее Наследуйся от TInterfacedObject и всех делов.
Здравствуйте, Mamut, Вы писали:
M>>>Зачем мне реализовывать методы QueryInterface, _AddRef и _Release, если я их все равно в данном случае не буду использовать? Или это идеология такая — писать код ради кода? Почему я не могу написать:
M>>>
M>>>MyInterface : Interface
M>>> function someMethod : AnsiString
M>>>end
M>>>MyClass : Class(TObject, MyInterface)
M>>> function someMethod : AnsiString
M>>>end
M>>>
M>>>MyInterface : Interface
M>>> function someMethod : AnsiString
M>>>end
M>>>MyClass : Class(TObject, MyInterface, IUnknown)
M>>> function someMethod : AnsiString
M>>> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
M>>> function _AddRef: Integer; stdcall;
M>>> function _Release: Integer; stdcall;
M>>>end
M>>>
M>>>Зачем плодить лишние сущности?
I>>Вы, наверное, этого нигде не видели, но вам не приходило в голову, что _AddRef, _Release и QueryInterface могут быть реализованы по разному? Или вы хотите, чтобы была какая-то реализация по-умолчанию?
M>Мне все равно, есть какая-то реализация по умолчанию или нет Я не могу поянть, зачем меня обязывают реализовывать эти функции, несмотря на то, что они имеют никакого смысла для какого-то данного объекта
А говорил, что ObjectPascal знаешь Эти методы нужны компилятору, чтоб он мог ссылки подсчитывать автоматически. К тому же, тебя никто не обязывает их реализовывать, наследуйся от TInterfacedObject.
I>>А по дефолту зачем?
M>Вот и о том же Зачем, реализуя MyInterface я все равно должен (фактически) реализовать IUnknown, хотя от этого IUnknown мне ни холодно ни жарко?
Ты так и не можешь отделить декларацию от реализации... Мамут, трудно с тобой
M>Почему я не могу просто задекларировать интерфейс с методами, которые мне нужны, и не заморачивать себе голову реализацией дополнительных, никому не нужных методов?
M>Или.
M>Если я так или иначе фактически реализую интерфейс IUnknown, зачем мне дополнительно указывать, что я его реализую/не реализую? Вон они — методы из IUnknown, навязаные мне MyInterface'ом. Зачем они мне там? Так, чтобы лишнее место занимать?
Здравствуйте, hattab, Вы писали:
H>Как оказалось, оно и в ActiveX работает
может пофиксили...
H>Судя по changes.txt, обновляют они ее чуть не каждый месяц...
EVR и прочих вистовских вещей как небыло так и нет. хотя один чувак на форуме частичный порт выкладывал. где ты обновления узрел я не знаю. стабильных версий не видно а качать билды непонятной стабильности с CVS — глупо. последней версии 2.3.4 уже пару лет. как минимум.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[26]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, hattab, Вы писали:
H>Ну надо же Ладно, кончай придуриваться. Согласись, что был не прав
В чем?
В делфи стандартная практика — применение набора сторонних компонентов для каждого проекта. Например где я работал стабильно применялись fast report и какие-то навороченные гриды.
В .NET такого нету. Стандартная библиотке покрывает большенство необходимостей.
H>Посмотри на свой любимый Paint.Net, в окошке About. Три сторонних библиотеки заюзано для такого скромненького проекта. Кстати, эта гхм... хранит MRU миниатюры в реестре, да еще и в виде строки base64
Напиши лучше.
H>Думается мне, что именно ты их и придумал...
Не говори чушь.
H>Ты в контексте разговора попробуй ответить. После добавления юникода в гуй и дженериков в язык, будет модерн?
Контекст разговора в том, что делфи устарел. Если в 2008 году туда включат нативную поддержку юникода он модерновым не станет.
Re[24]: наши менеджеры памяти самые менеджеристые менеджеры
M>>Про государственные конторы тебе уже тут говорили
H>Да мне тут и про вояк говорили... Вот только говорители даже обосновать такие требования не могут
Мы — исполнители. Заказчик может требовать, что хочет. Блин, я в рассылке по jQuery (Javascript!) наткнулся на вопросы, связаные с тем, что для гос. сайта был прямой запрет на использование каких-лио сторонних Javascript-компонентов.
M>>Юникод — это базовое требование, в отличие от XML-RPC и прочих
H>Что значит базовое? В языке оно есть очень давно. В гуй-библиотеке не поддерживается пока. Неприятный факт? Конечно неприятный. Но для кого? Для корпоративной системы его наличие или отсутствие не упирается ни в одну точку (а Delphi на что ориентирована?).
Угу. Особнно, если в этой системе надо поддерживать турецкий, английский и русский. Good luck, как говорится.
M>>Мне все равно, есть какая-то реализация по умолчанию или нет Я не могу поянть, зачем меня обязывают реализовывать эти функции, несмотря на то, что они имеют никакого смысла для какого-то данного объекта
H>А говорил, что ObjectPascal знаешь Эти методы нужны компилятору, чтоб он мог ссылки подсчитывать автоматически. К тому же, тебя никто не обязывает их реализовывать, наследуйся от TInterfacedObject.
То сть от COM мы все равно никуда не уходим?
I>>>А по дефолту зачем?
M>>Вот и о том же Зачем, реализуя MyInterface я все равно должен (фактически) реализовать IUnknown, хотя от этого IUnknown мне ни холодно ни жарко?
H>Ты так и не можешь отделить декларацию от реализации... Мамут, трудно с тобой
Я не понимаю, почему такую кривизну называют идеологией
H>>>Расширяется не IUnknown. Расширяется MyInterface декларацией IUnknown.
M>>Зачем? Что нам это дает, кроме необходимости писать дополнительный код, который все равно нигде не нжен и нигде не участвует?
H>Что значит зачем? Правило языка. Любой интерфейс, если не указано иное, наследуется (но наследование осуществляется расширением декларации) от IInterface.
В пятый раз прошу: обьсни мне, что ты понимаешь под словом "расширяется" и что ты понимаешь под словом "наследуется"
M>>Зачем мне реализовывать методы QueryInterface, _AddRef и _Release, если я их все равно в данном случае не буду использовать? Или это идеология такая — писать код ради кода? Почему я не могу написать:
H>Ты можешь и не использовать, а вот компилятор использует, ссылки считает да интерфейсы получает...
Тогда зачем мне явно указывать, что тот или иной объект реализует IUnknown, если мы и так его реализуем?
M>>
M>>MyInterface : Interface
M>> function someMethod : AnsiString
M>>end
M>>MyClass : Class(TObject, MyInterface)
M>> function someMethod : AnsiString
M>>end
M>>
H>Можешь написать и так, только наследуйся от TInterfacedObject.
Если. Любой. Интерфейс. Наследуется. От. IUnknown. Зачем мне явно указывать, что мы реализуем IUnknown, если мы его все равно реализуем
M>>Захотели реализовать IUnknown? Пожалуйста: M>>
M>>MyInterface : Interface
M>> function someMethod : AnsiString
M>>end
M>>MyClass : Class(TObject, MyInterface, IUnknown)
M>> function someMethod : AnsiString
M>> function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall;
M>> function _AddRef: Integer; stdcall;
M>> function _Release: Integer; stdcall;
M>>end
M>>
M>>Зачем плодить лишние сущности?
H>Это ты сейчас предлагаешь писать лишнее Наследуйся от TInterfacedObject и всех делов.
Зачем? Зачем мне дополнительно еще указывать то, что мы реализуем IUnknown, если мы его так или иначе реализуем?
И разве любой класс, реализующий любой интерфейс не становится автоматически COM-объектом? Если да, то тогда любой интерфейс в Дельфи является COM-совместимым
Здравствуйте, Mamut, Вы писали:
M>Зачем? Зачем мне дополнительно еще указывать то, что мы реализуем IUnknown, если мы его так или иначе реализуем?
Интересно, когда ты успел его "так или иначе" зариализовать? Когда написал: MyInterface : Interface?
M>И разве любой класс, реализующий любой интерфейс не становится автоматически COM-объектом?
С какого перепуга?
Здравствуйте, Mamut, Вы писали:
H>>Ты так и не можешь отделить декларацию от реализации... Мамут, трудно с тобой
M>Я не понимаю, почему такую кривизну называют идеологией
Заведи отдельную тему: Абстракция — идеология или кривизна?
Полагаю, мнения не очень разделятся.
Здравствуйте, squid, Вы писали:
H>>Как оказалось, оно и в ActiveX работает
S>может пофиксили...
У меня версия от 2002 года... Можешь сказать в чем заключался твой фикс, я в исходниках погляжу
H>>Судя по changes.txt, обновляют они ее чуть не каждый месяц...
S>EVR и прочих вистовских вещей как небыло так и нет. хотя один чувак на форуме частичный порт выкладывал. где ты обновления узрел я не знаю. стабильных версий не видно а качать билды непонятной стабильности с CVS — глупо. последней версии 2.3.4 уже пару лет. как минимум.
Я же написал, changes.txt. Да, 2.3.4 с 2004 года обновлений небыло, но обновлялось оно почти каждый месяц. Можешь еще здесь глянуть, хидеры аж от 2007 года.
Re[27]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, gandjustas, Вы писали:
H>>Ну надо же Ладно, кончай придуриваться. Согласись, что был не прав G>В чем?
Вот в этом:
H>Да ни одна библиотека не в состоянии покрыть все потребности...
Только .NET и Java почему-то покрывает. Есть конечно некоторые нестандартные решения, о рынке говорить не приходится.
G>В делфи стандартная практика — применение набора сторонних компонентов для каждого проекта. Например где я работал стабильно применялись fast report и какие-то навороченные гриды.
Более того, применение сторонних библиотек это вообще общепринятая практика. Повторное использование кода относится не только к собственным решениям.
G>В .NET такого нету. Стандартная библиотке покрывает большенство необходимостей.
Угу. И Девэкспрессов нету для .Net'а... В общем твое упорство говорит только об одном -- тебе не приходилось писать ничего сложнее стандартных базаморд.
H>>Посмотри на свой любимый Paint.Net, в окошке About. Три сторонних библиотеки заюзано для такого скромненького проекта. Кстати, эта гхм... хранит MRU миниатюры в реестре, да еще и в виде строки base64 G>Напиши лучше.
Мне то оно зачем? Не я это тут рекомендовал к ознакомлению...
H>>Думается мне, что именно ты их и придумал... G>Не говори чушь.
Чушь -- это твои бездоказательные и немотивированные доводы.
H>>Ты в контексте разговора попробуй ответить. После добавления юникода в гуй и дженериков в язык, будет модерн? G>Контекст разговора в том, что делфи устарел. Если в 2008 году туда включат нативную поддержку юникода он модерновым не станет.
Вот! Теперь список требований для модерна в студию, плиз
Re[25]: наши менеджеры памяти самые менеджеристые менеджеры
Здравствуйте, Mamut, Вы писали:
M>>>Про государственные конторы тебе уже тут говорили
H>>Да мне тут и про вояк говорили... Вот только говорители даже обосновать такие требования не могут
M>Мы — исполнители. Заказчик может требовать, что хочет. Блин, я в рассылке по jQuery (Javascript!) наткнулся на вопросы, связаные с тем, что для гос. сайта был прямой запрет на использование каких-лио сторонних Javascript-компонентов.
Я фигею с таких доводов... Мы исполнители... Тебе заказчик банку с вазелином покажет, капустой похрустит и...? С заказчиком нужно диалог вести и, по меньшей мере, понять причины таких требований. Не, ну если тебе нравится получать деньги за переписывание того, что уже существует... в MS прямая дорога, они вот собираются IE8 с нуля писать (точнее уже собрались и пишут).
M>>>Юникод — это базовое требование, в отличие от XML-RPC и прочих
H>>Что значит базовое? В языке оно есть очень давно. В гуй-библиотеке не поддерживается пока. Неприятный факт? Конечно неприятный. Но для кого? Для корпоративной системы его наличие или отсутствие не упирается ни в одну точку (а Delphi на что ориентирована?).
M>Угу. Особнно, если в этой системе надо поддерживать турецкий, английский и русский. Good luck, как говорится.
Хе-хе-хе. Следуя логике твоих слов, для тебя аналог MS Trident'а написать проще, чем юникод на VCL повесить (а ведь это можно сделать и без написания аналогов VCL контролам, al'a TNT) . Ню-ню.
Здравствуйте, Mamut, Вы писали:
M>>>Мне все равно, есть какая-то реализация по умолчанию или нет Я не могу поянть, зачем меня обязывают реализовывать эти функции, несмотря на то, что они имеют никакого смысла для какого-то данного объекта
H>>А говорил, что ObjectPascal знаешь Эти методы нужны компилятору, чтоб он мог ссылки подсчитывать автоматически. К тому же, тебя никто не обязывает их реализовывать, наследуйся от TInterfacedObject.
M>То сть от COM мы все равно никуда не уходим?
Бинарная совместимость с COM обеспечивается, да.
I>>>>А по дефолту зачем?
M>>>Вот и о том же Зачем, реализуя MyInterface я все равно должен (фактически) реализовать IUnknown, хотя от этого IUnknown мне ни холодно ни жарко?
H>>Ты так и не можешь отделить декларацию от реализации... Мамут, трудно с тобой
M>Я не понимаю, почему такую кривизну называют идеологией
Это ты называешь кривизной то, чего не можешь понять.