Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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,
> вместо того, чтобы народ вопросами изводить.


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

---------

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



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

Форум: "Потрепаться";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.57 MB
Время: 0.038 c
4-1127021710
Dot
2005-09-18 09:35
2005.11.20
WinSock


14-1130246873
oldman
2005-10-25 17:27
2005.11.20
Мошенничество на государственном уровне?


1-1130510277
BFG9k
2005-10-28 18:37
2005.11.20
Что происходит между OnClose и OnDestroy ?


2-1130438398
Mr.jack
2005-10-27 22:39
2005.11.20
QReport албомный


14-1130486099
Igorek
2005-10-28 11:54
2005.11.20
Мой любимец распускает пятый листочек





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский