Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

По поводу 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,
> вместо того, чтобы народ вопросами изводить.


Игорь, несерьезно.
Будто ты не знаешь, что в релизах и анонсах приводятся только технологии.

---------

Извожу вопросами? Ну иж извини - можно же не читать :) Не для тебя писано, т.к. я скорее СО жду, может пройдется мимо, иногда же он бывает тут...



Страницы: 1 2 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.06 c
11-1111888181
Ripper
2005-03-27 05:49
2005.11.20
Проблема с Dll


14-1130375544
TakeIt
2005-10-27 05:12
2005.11.20
Что такое новая система шаблонов кода в Delphi 2006 ?


14-1130448024
LordOfRock
2005-10-28 01:20
2005.11.20
Альтернативные оболочки


10-1106138303
Елена
2005-01-19 15:38
2005.11.20
Как определить позицию на листе Word


2-1130757736
syte_ser78
2005-10-31 14:22
2005.11.20
ошибка при вызове функции из dll