Форум: "Потрепаться";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизПо поводу delphi 2006. Найти похожие ветки
← →
Суслик © (2005-10-23 15:36) [0]Тут был анонс сабжа.
Не знает никто - не реализована ли в нем более полноценная рефлексия (или хотя бы большая часть) для delphi for WIN32, например, как С# или java?
Под полноценной я понимаю - runtime информация не только по published методам и свойствам но и по любым другим членам классов.
← →
Lamer@fools.ua © (2005-10-23 15:44) [1]>Не знает никто - не реализована ли в нем более полноценная рефлексия (или хотя бы большая часть) для delphi for WIN32, например, как С# или java?
Поскольку я люблю придираться, замечу, что рефлексия, это особенность не си-шарпа, как языка, а .NET Framework"а в целом. Сорри за оффтоп.
← →
Суслик © (2005-10-23 15:47) [2]
> а .NET Framework"а в целом
ой спаааасиба, а я не знал...
← →
Игорь Шевченко © (2005-10-24 10:17) [3]
> Не знает никто - не реализована ли в нем более полноценная
> рефлексия (или хотя бы большая часть) для delphi for WIN32,
> например, как С# или java?
Сам понял, что спросил ?
← →
Lamer@fools.ua © (2005-10-24 11:05) [4]>>Игорь Шевченко © (24.10.05 10:17) [3]
Не знаю, как сам Дима, но лично я понял, что он спросил. Просто я не в курсе насчёт D2006.
← →
jack128 © (2005-10-24 11:11) [5]Суслик © (23.10.05 15:36)
Под полноценной я понимаю - runtime информация не только по published методам и свойствам но и по любым другим членам классов
а зачем, если не секрет?? Акула по этому поводу правельно сказал: "срам фигой прикрывать" http://delphimaster.net/view/13-1123439512/
← →
Суслик © (2005-10-24 11:55) [6]по делу, товарищи, по делу :)
← →
Суслик © (2005-10-28 21:03) [7]
> Не знаю, как сам Дима, но лично я понял, что он спросил.
> Просто я не в курсе насчёт D2006.
Есть мнение, что вообще никто не в курсе.
На newsgroupах тоже не отвечают.
← →
tesseract © (2005-10-28 21:11) [8]Удалено модератором
← →
Piter © (2005-10-28 21:18) [9]tesseract © (28.10.05 21:11) [8]
Всегда считал что рефлексия это
ты путаешь с релаксированием.
Reflex и Relax разные вещи :)
← →
tesseract © (2005-10-28 21:47) [10]Да и явно всё это не относится к reflection.
← →
Суслик © (2005-10-30 09:08) [11]Вообще я не знаю, как описанный мной механизм называется в delphi. В java он называется именно reflection.
----------
Тут попутно сложится еще один вопрос - где вообще детали о новых версиях delphi можно выяснить?
Если в newsgroup"ах на сайте производителя, то там непонятно где - есть вроде группа с анонсами - но она пустая. Если просто на сайте производителя, то там только общие слова о превосходстве новой версии. А вот детали, иногда столь важные, выяснять негде.
← →
SPeller © (2005-10-30 09:32) [12]Обнаружил отфильтрованное как спам письмо:
Уважаемый коллега!
Рады представить Вам новейшую версию мощной и высокопродуктивной среды быстрой разработки для Windows и .NET – Delphi 2006.
Новые возможности и усовершенствования, представленные в Delphi, помогут сократить время и затраты на создание, управление и сопровождение приложений как для Windows, так и .NET, в частности:
- поддержка языков программирования Delphi для Win32, Delphi для .NET, C++ и C# в единой среде;
- ECO IIIљ обеспечит создание надежных корпоративных приложений (object relational mapping, transparent object persistence, поддержка исполняемых диаграмм состояний);
- обновленная библиотека визуальных компонент (VCL) позволит ускорить и упростить разработку графического пользовательского интерфейса (GUI), автоматически располагая компоненты в соответствии с настраиваемыми правилами;
- новая система шаблонов кода и другие нововведения среды разработки качественно улучшат работу с исходными текстами и повысят производительность разработки;
- благодаря тесной интеграции с решениями Borland управления жизненным циклом ПО реализуется возможность управления требованиями (Borland CaliberRM); управления конфигурациями и изменениями (Borland StarTeam); визуального моделированияљ с использованием технологии LiveSource (Borland Together).
Подробная информация о новых возможностях Delphi 2006 представлена в обзорной презентации продуктаљ http://www.almportal.ru/public/seminars/delphi2006/d2006_sorlik_review.ppt
Кроме этого, получить исчерпывающую и актуальную информацию о Delphi 2006 Вы сможете, приняв участие в 24-часовом радиомарафоне 24 Hours of Delphi, который стартует 24 октября в 11.00 (по московскому времени) на портале Borland Developer Network http://ec.borland.com/eventDisplay.faces?e=589.
Внимание! Специальное предложение Borland:
– Pre-Order! 15-процентная скидка на любые редакции Delphi 2006 (полные версии и upgrade с предшествующих версий) действует на заказы, размещенные с настоящего времени и до официального выпуска продукта в декабре с.г.
– Upgrade from Delphi 2005! 20-процентная скидка на обновление для пользователей Delphi 2005 действует на заказы, размещенные до 15 декабря с.г.
По вопросам приобретения продукта обращайтесь к нашим партнерам http://info.borland.ru/partners
← →
Суслик © (2005-10-30 09:54) [13]мне оно тоже приходило. Но как видишь, тут ничего нового нет.
Презентацию С. Орлика видел.
← →
DiamondShark © (2005-10-30 13:00) [14]
> jack128 © (24.10.05 11:11) [5]
>
> а зачем, если не секрет?? Акула по этому поводу правельно
> сказал: "срам фигой прикрывать" http://www.delphimaster.
> ru/cgi-bin/forum.pl?id=1123439512&n=14
Не перевирайте классиков.
"Срам фигой" -- относилось не к рефлексии, а к декларативной видимости членов.
А рефлексия -- штука полезная, иногда очень красивые вещи позволяет реализовать.
← →
Суслик © (2005-10-30 13:03) [15]Меня всегда удвиляло, как живет javисты. Например, у них нет процедурных типов - вообще. Ясно, что в это легко заменяется классами+вирт. методами. Но иногда все-таки хочется иметь подобие процедурных типов. Например, передал куда-либо callback.
В этом случае можно бойтись рефлексией - передать имя метода.
← →
iZEN © (2005-10-31 14:12) [16]
> Суслик © (30.10.05 13:03) [15]
> Меня всегда удвиляло, как живет javисты. Например, у них
> нет процедурных типов - вообще. Ясно, что в это легко заменяется
> классами+вирт. методами. Но иногда все-таки хочется иметь
> подобие процедурных типов. Например, передал куда-либо callback.
Есть такой одноимённый паттерн проектирования: "Callback". Он применим не только в одном локальном приложении, но и в распределённой сетевой среде.
Для примера.
Процедурный тип в RMI рассматривается в контексте метода(ов) удалённого объекта. Платформа Java сама осуществляет автоматический маршаллинг вызовов и данных между двумя и более JVM для межпроцессного обмена (в случае с распределёнными вычислениями - в сети). Программисту остаётся следовать простым правилам стандартного фреймворка (в частности, RMI), а не придумывать собственные механизмы.
> В этом случае можно бойтись рефлексией - передать имя метода.
Вместо рефлексии грамотнее применить интерфейсы и инстанцирование классов с отложенным объявлением - так можно серьёзно выиграть в эффективности. Рефлексия нужна в средах проектирования на основе техники JavaBeans. Серверные компоненты EJB тоже активно используют рефлексию.
← →
Суслик © (2005-10-31 14:27) [17]
> Вместо рефлексии грамотнее применить интерфейсы и инстанцирование
> классов с отложенным объявлением - так можно серьёзно выиграть
> в эффективности.
не спорю. Но! Есть случаи когда рефлексия далы бы очень много в красоте и читабельности кода.
вот пример.
TContainer
items: TObjectList; // содержат TElement
В TElement есть 100 функций.
В TContainer нужно также иметь эти методы, возвращающие суммарные значения соотв. методов элементов. Ясное дело, что в этом случае можно придумать и обойтись без рефлексии. Можно для каждый методо суммирования сократить до одной строки (благо указатели на методы и TMEthod никто не в дельи не отменял). Все можно. Но все равно сократить код меньше чем на 3 строки для каждой функции не выйте. Да, можно что-то навернутЬ, дабы не копировать одинаковые методы.
Но с рефлексией было бы проще - в массиве делржать список методов и усе.
Может быть и неудачный пример, но зато актуальный :)
← →
Игорь Шевченко © (2005-10-31 14:46) [18]
> В TContainer нужно также иметь эти методы, возвращающие
> суммарные значения соотв. методов элементов. Ясное дело,
> что в этом случае можно придумать и обойтись без рефлексии.
>
Ну да, собственно, зная метод TElement можно вызвать суммирование значений, возвращенных им. Оно в каждом учебнике по ООП приводится на предмет иллюстрации полиморфизма.
← →
Суслик © (2005-10-31 14:55) [19][18] к делу (в данном конексте) не относится.
← →
Игорь Шевченко © (2005-10-31 15:02) [20]Суслик © (31.10.05 14:55) [19]
В таком случае, объясни, как в твоем примере [17] рефлексия могла бы дать очень много в красоте и читабельности кода. Я, если честно, не понимаю.
← →
Sandman29 © (2005-10-31 15:10) [21]Если в массиве делржать список методов и усе, то это значит что у нас есть виртуальная функция. Если очень хочется иметь разные названия в разных классах, то можно применить интерфейсы
← →
Algol (2005-10-31 16:57) [22]
> а зачем, если не секрет?? Акула по этому поводу правельно
> сказал: "срам фигой прикрывать"
Для сериализации например.
← →
Игорь Шевченко © (2005-10-31 17:16) [23]Algol (31.10.05 16:57) [22]
> Для сериализации например.
А в настоящий момент ничего не сериализуется ? Классы TComponent в форме свои свойства совсем не сохраняют ?
← →
Lamer@fools.ua © (2005-10-31 17:45) [24]>не реализована ли в нем более полноценная рефлексия (или хотя бы большая часть) для delphi for WIN32
Я думаю, что полноценную рефлексию реализовывать в среде неуправляемого кода не имеет смысла.
Если размышлять в понятиях .NET, то что делать в такой ситуации:var
I: cardinal;
T: Type; // допустим, аналог .NET"овского
begin
I := Random(23123);
T := TObject(I).GetType(); // ку?
ShowMessage(T.FullName);
end;
?
← →
Lamer@fools.ua © (2005-10-31 17:52) [25]>>Игорь Шевченко © (31.10.05 17:16) [23]
Чтобы они (TPersistent с детями, если не ошибаюсь) умели сериализоваться/десериализоваться, нужно написать несколько больше, чем в .NET. Всё, что нужно в .NET для того, чтобы тип стал сериализуемым, это пометить этот тип атрибутом SerializableAttribute.
← →
Lamer@fools.ua © (2005-10-31 17:54) [26]>Всё, что нужно в .NET для того, чтобы тип стал сериализуемым, это пометить этот тип атрибутом SerializableAttribute.
Это в обычных случаях. Если нужно что-то особенное, то можно реализовать интерфейс ISerializable.
← →
Игорь Шевченко © (2005-10-31 17:55) [27]Lamer@fools.ua © (31.10.05 17:52) [25]
> Чтобы они (TPersistent с детями, если не ошибаюсь) умели
> сериализоваться/десериализоваться, нужно написать несколько
> больше, чем в .NET.
Разве ? Мне казалось проще - наследуйся от TComponent, объявляй published-свойства и пользуйся методами TStream ReadComponent и WriteComponent :)
> Всё, что нужно в .NET для того, чтобы тип стал сериализуемым,
> это пометить этот тип атрибутом SerializableAttribute.
Не только. Иначе бы Рихтер не писал статью в MSDN Magazine
← →
DiamondShark © (2005-10-31 18:26) [28]
> Lamer@fools.ua © (31.10.05 17:45) [24]
>
> Если размышлять в понятиях .NET, то что делать в такой ситуации:
То же самое, что и при вызове любого другого метода: вызывать метод.
В чём проблема-то?
← →
Lamer@fools.ua © (2005-10-31 18:47) [29]>>Игорь Шевченко © (31.10.05 17:55) [27]
>Разве ? Мне казалось проще - наследуйся от TComponent, объявляй published-свойства и пользуйся методами TStream ReadComponent и WriteComponent :)
Ключевое слово published.
>Не только. Иначе бы Рихтер не писал статью в MSDN Magazine
Эту или другую?
http://msdn.microsoft.com/msdnmag/issues/02/04/net/
← →
Lamer@fools.ua © (2005-10-31 18:49) [30]>>DiamondShark © (31.10.05 18:26) [28]
GetType() должОн вернуть реальный тип инстанса. А какой реальный тип?
← →
DiamondShark © (2005-10-31 19:17) [31]
> Lamer@fools.ua © (31.10.05 18:49) [30]
> >>DiamondShark © (31.10.05 18:26) [28]
>
> GetType() должОн вернуть реальный тип инстанса. А какой
> реальный тип?
Ну да.
А TObject(1234).ClassType должон вернуть реальный RTTI.
Реализация RTTI в среде неуправляемого кода не имеет смысла.
← →
Algol (2005-10-31 19:27) [32]
> Разве ? Мне казалось проще - наследуйся от TComponent, объявляй
> published-свойства и пользуйся методами TStream ReadComponent
> и WriteComponent :)
А если мне нужно сохранить состояние объекта целиком? А не только тех свойств, которые разработчик объекта почему-то решил сделать published?
А если мне нужен свой сериализатор со своим форматом, и я не хочу использовать формат WriteComponent ?
← →
Суслик © (2005-10-31 19:54) [33]ладно вам доказывать полезность рефлексии.
сказал бы кто по сабжу :))
← →
DiamondShark © (2005-10-31 20:06) [34]А вот как триал выйдет -- так сразу по сабжу и узнаем...
← →
Суслик © (2005-10-31 20:14) [35]говорят нескоро, я справшивал. только после официального релиза - т.е. после 15 дек или того позднее...
← →
DiamondShark © (2005-10-31 20:39) [36]А после официального релиза будут пиратские копии.
Всё равно, какой смысл до релиза голову ломать?
← →
Суслик © (2005-11-01 09:34) [37]была, собственно, надежда, что кто-то знающий тут пройдет и заодно ответит. Название у темы столь призывное :) Да и что релиза то ждать - беты скорее всего уже есть.... Может кто видел.
← →
Игорь Шевченко © (2005-11-01 10:42) [38]Lamer@fools.ua © (31.10.05 18:47) [29]
> Эту или другую?
Эту.
> Ключевое слово published.
А чем, собственно, ключевое слово published так уж сильно отличается от добавления атрибута Serializable ? :)
Суслик © (01.11.05 09:34) [37]
Ну нету там этого. Если бы было, Borland бы в feature matrix давно бы уже отписал. Ты б хоть почитал, ее, feature matrix, вместо того, чтобы народ вопросами изводить.
← →
Lamer@fools.ua © (2005-11-01 11:18) [39]>>Игорь Шевченко © (01.11.05 10:42) [38]
>Эту.
Тогда не понимаю, что же он такого написал, что не написано в MSDN. Я, правда, не вчитывался, а пробежал глазами.
Вот полноценный код (C#) для сериализации любого сериализуемого объекта в .NET"е:
SOAP:
IFormatter fmtSoap = new SoapFormatter();
using (FileStream fs = new FileStream(@"C:\Data.xml", FileMode.Create))
{
fmtSoap.Serialize(fs, obj); // obj - serializable instance
}
Binary:IFormatter fmtBin = new BinaryFormatter();
using (FileStream fs = new FileStream(@"C:\Data.bin", FileMode.Create))
{
fmtBin.Serialize(fs, obj); // obj - serializable instance
}
Десериализация аналогична по сложности. Причём для большинства случаев достаточно, чтобы тип, экземпляром которого является obj, был помечен атрибутом SerializableAttribute.
>А чем, собственно, ключевое слово published так уж сильно отличается от добавления атрибута Serializable ? :)
Тем, что сериализуются поля (как public, так и не public), а не только public (точнее published) свойства.
← →
Суслик © (2005-11-01 11:29) [40]
> Ну нету там этого. Если бы было, Borland бы в feature matrix
> давно бы уже отписал. Ты б хоть почитал, ее, feature matrix,
> вместо того, чтобы народ вопросами изводить.
Игорь, несерьезно.
Будто ты не знаешь, что в релизах и анонсах приводятся только технологии.
---------
Извожу вопросами? Ну иж извини - можно же не читать :) Не для тебя писано, т.к. я скорее СО жду, может пройдется мимо, иногда же он бывает тут...
← →
Игорь Шевченко © (2005-11-01 11:54) [41]Lamer@fools.ua © (01.11.05 11:18) [39]
> Тогда не понимаю, что же он такого написал, что не написано
> в MSDN. Я, правда, не вчитывался, а пробежал глазами.
Он написал немного больше, чем просто добавление атрибута.
Кстати, что интересно, я в какой-то момент попытался сериализовать класс со свойством типа TStringList, и не очень оно у меня получилось. Разумеется, тип у свойства был изменен для безгеморройности, но "осадок остался".
> Тем, что сериализуются поля (как public, так и не public),
> а не только public (точнее published) свойства.
Охотно верю. Но мне ничего не мешало переносить нужные мне для сериализации свойства в раздел published наследника TComponent
← →
Суслик © (2005-11-01 12:22) [42]не только в сериализации дело.
была бы рефлексия можно было бы писать навернутые среды выполнения, типа серверов приложений или еще чего...
← →
Игорь Шевченко © (2005-11-01 12:30) [43]Суслик © (01.11.05 12:22) [42]
А на .Net не судьба писать, где уже есть рефлексия ? :)
Кстати, по поводу [20] что-то прояснишь ? :)
← →
Суслик © (2005-11-01 12:32) [44]например, при налиции рефлексии можно было бы написать mapper.
Вопрос НЕ совсем теоретический. Так получилось, что за годы моей разработки сложился некоторый mapper. Его задача - отобразить объектную модель на БД и наоборот. Т.к. рефлексии нет, то приходится многие атрибуты задавать явно. Т.е. где-то хранить структуру класса.
При наличии рефлексии многие вещи можно было бы упростить и украсить...
← →
Суслик © (2005-11-01 12:34) [45]
> Кстати, по поводу [20] что-то прояснишь ? :)
не хочу - т.к. тебя меня еще ни разу не удавалось переубедить :)
----------------
> А на .Net не судьба писать, где уже есть рефлексия ? :)
А вот хочется же в гамаке и на лыжах
(с) Акуличев.
Т.е. с привычного не слезать и получать новое ...
← →
Суслик © (2005-11-01 12:35) [46]т.к. тебя меня еще ни разу не удавалось переубедить :)
заменить на
не хочу - т.к. тебя мне еще ни разу не удавалось переубедить :)
← →
Игорь Шевченко © (2005-11-01 13:01) [47]Суслик © (01.11.05 12:32) [44]
> Его задача - отобразить объектную модель на БД и наоборот.
> Т.к. рефлексии нет, то приходится многие атрибуты задавать
> явно. Т.е. где-то хранить структуру класса.
Я, честно говоря, не вижу отсутствия красоты в том, что надо указывать структуру класса. На мой взгляд такая конструкция вполне читаемая, причем, более читаемая, чем при использовании рефлексии.
> А вот хочется же в гамаке и на лыжах
Для начала советую купить водолазный скафандр и косу - газон косить.
← →
DiamondShark © (2005-11-01 13:22) [48]
> Я, честно говоря, не вижу отсутствия красоты в том, что
> надо указывать структуру класса. На мой взгляд такая конструкция
> вполне читаемая, причем, более читаемая, чем при использовании
> рефлексии.
Некрасота заключается в том, что класс отдельно, а некое егой опейсание -- отдельно. Лишний повод для возникновения inconsistency.
Да и просто обидно: дважды одно и то же описывать.
← →
Lamer@fools.ua © (2005-11-01 13:31) [49]>>Игорь Шевченко © (01.11.05 11:54) [41]
>Он написал немного больше, чем просто добавление атрибута.
Это хорошо, что он кроме всего прочего написал, как сериализация, собственно, работает и т. д. и т. п. Только вот, разве это противоречит моей фразе "Всё, что нужно в .NET для того, чтобы тип стал сериализуемым, это пометить этот тип атрибутом SerializableAttribute"?
Сразу замечу, что есть некоторые типы, объекты которых хоть и могут сериализоваться/десериализоваться, но которые, тем не менее, не имеет смысла передавать по Remoting"у. Например, WindowsIndentity, если не ошибаюсь.
>Охотно верю. Но мне ничего не мешало переносить нужные мне для сериализации свойства в раздел published наследника TComponent
А мне вот приходилось сталкиваться с ситуациями, когда нужно было, чтобы сериализовались некоторые внутренные данные, которые не должны быть публично видимыми.
← →
Игорь Шевченко © (2005-11-01 13:35) [50]Lamer@fools.ua © (01.11.05 13:31) [49]
> нужно было, чтобы сериализовались некоторые внутренные данные,
> которые не должны быть публично видимыми
И это было. Проблема решалась с помощью defineproperties
Я не спорю, что рефлексия это хорошо и удобно. Я не вижу причины, почему вместо того, чтобы делать аналогичные действия в среде, где рефлексия не встроена, надо стонать по поводу отсутствия рефлексии :)
← →
Lamer@fools.ua © (2005-11-01 13:37) [51]>>Игорь Шевченко © (01.11.05 13:35) [50]
>Я не вижу причины, почему вместо того, чтобы делать аналогичные действия в среде, где рефлексия не встроена, надо стонать по поводу отсутствия рефлексии :)
Поражаюсь Вашим телепатическим способностям. И как Вы по написанному тексту звуки стонов определяете? :-))
← →
Algol (2005-11-01 15:40) [52]
> Т.е. с привычного не слезать и получать новое ...
Может скажу крамолу (как для данного сайта), но если хочешь нормально юзать фичи аля .Net - пиши на C#.
← →
Игорь Шевченко © (2005-11-01 15:54) [53]Algol (01.11.05 15:40) [52]
А обосновать ?
← →
Algol (2005-11-01 17:14) [54]
> А обосновать ?
А не хачу ничего обосновывать ))) Это мое сугубое ИМХО.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.052 c