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


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

---------

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


 
Игорь Шевченко ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.054 c
2-1131004169
Helen
2005-11-03 10:49
2005.11.20
Последняя нажатая клавиша


14-1130707552
NightLord
2005-10-31 00:25
2005.11.20
из D6 в D7


3-1128600013
Ascer
2005-10-06 16:00
2005.11.20
Выбор из справочника


14-1130249321
Hamertime
2005-10-25 18:08
2005.11.20
Расшифровка бинарного кода


14-1130342484
Копир
2005-10-26 20:01
2005.11.20
Мышка-mouse рознь :-)