воскресенье, декабря 29, 2013

Delphi XE5 Update 2. S.S.D.D.

Вот, наконец-то, и я добрался (несколько припозднился, но на то были причины) до ощупывания Delphi с поддержкой Android. С самого начала было ясно, что качественной эта поддержка не будет, а потому нет смысла сразу кидаться покупать какое-либо Android-устройство. Но в планах уже значиналось приобретение нового смартфона на замену дышавшей на ладан старенькой Nokia. С моделью я определился через несколько дней после выхода Delphi XE5 (стимул всё-таки), и как выяснилось практически сразу, с выбранной моделью у Delphi проблемы (точнее с графическим процессором используемом в данном аппарате). Но, телефон должен нравится мне, а не Delphi, поэтому выбора своего я решил не менять (хотя посматривал и на Lenovo K-900, но с тем у Delphi вообще фатальная несовместимость) и надеяться на скорый фикс этого бага. В Update 2 баг таки пофиксили. Ура. Тестируем новую обезьяну, ой, простите, теперь это уже FM Platform (не хухры-мухры, но попробуйте кроссплатформенно послать SMS’ку или погудеть виброй, так сразу поймете ценность этого “Platform” :))

суббота, октября 12, 2013

Кушайте, не обляпайтесь.

Сегодня в ридере появилась статья “Delphi штурмует Android. Беседуем с Всеволодом Леоновым о Delphi XE5” рассказывающая о победах и завоеваниях. Такое всегда интересно почитать. Я позволю себе процитировать оттуда небольшой фрагмент:

- Технологии FireMonkey уже несколько лет. Вроде все более менее становится стабильным и уже не так страшно применять новинку для продакшн приложений. По прошествии этого временного промежутка вы можете сказать, что технология удалась? Нашла ли она свою аудиторию и какие нововведения следует ожидать в обозримом будущем?

Что технология удалась, стало заметно, к сожалению, лишь сейчас, если мы смотрим на неё глазами разработчиков. Только сейчас программисты стали реально интересоваться Платформой приложений FM (бывшая FireMonkey), когда увидели всю её мощь для мобильной разработки под Android. И это несмотря на то, что архитектурно она была заложена и технологически реализована в релизе XE2. Например, российский проект www.sphere-online.ru – многоцелевая платформа онлайн-коммуникаций. Команда выбрала Платформу FM, т.к. изначально хотела сделать мульти-платформенное решение для Windows и Mac OS, причем с интерфейсом высшего качества. На следующем после XE2 релизе XE3 данная компания сделала мульти-платформенную систему, а что может быть лучшим доказательством успешности технологии, как ни реализация на её основе реального проекта!? Теперь данная команда благодарит сама себя за правильный выбор средства разработки в своё время и готовит мобильную поддержку.

 

В общем, я сходил по данной ссылке… Никакой многоцелевой платформы онлайн-коммуникаций там нет, есть редирект на онлайн-игру “Сфера-перерождение”. Думаю, ну мало-ли, может их сейчас принято называть многоцелевыми коммуникационными платформами. В общем, скачал клиент дабы посмотреть чего там на FMX наваяли. Оказалось, что FMX’ом там и не пахнет. Исполняемые модули, коих две штуки, собраны компилятором MS VC++, и россыпь dll’ей тоже ни коим боком к FMX не относится. Так то. А народ в комментариях радуется, дескать жива курилка. Хотел прямо там вопрос задать – что мол за дела - да у них для этого регистрироваться нужно. В общем вот. В меню сегодня лапша.

 

Обновление от 16.10.2013.

Так, похоже имела место быть чья-то невнимательность, из-за которой в статье была указана неправильная ссылка. А я уже успел о Всеволоде плохо подумать :) Спасибо Роману Янковскому за изыскания. Правильная ссылка вот http://www.sphere-live.com/ и там действительно коммуникационный софт с FMX-интерфейсом.

 

Но я же не зря ходил по тем ссылкам, я хотел посмотреть на интерфейс высшего качества о котором говорится в статье. Итак, кратко - под интерфейсом высшего качества имеется ввиду FMX-стиль “Jet” из Premium Style Pack (это тот, где все черное-черное). Кому-то сливающаяся чернота нравится, кому-то нет.

Теперь по порядку. Первый запуск на хостовой машине c Windows 7 x64 закончился ничем:

sphere_at_start_on_host

Следующие попытки я делал уже под виртуальной Windows 7 x86. Запуск прошел успешно. Но в окне регистрации, после выбора русского языка, снова сюрприз:

sphere_av

Дальше открывается основное окно с кучей элементов управления. Походив по меню (кстати, в этом стиле совершенно не понятно, какой пункт меню активен, а какой пассивен, т.е. какой может быть выбран, а какой нет) поймал еще один глюк (два одновременно открытых выпадающих меню):

sphere_gui

Потребление памяти на этом этапе составляло примерно 140MB, что довольно много для такого софта, особенно если учесть, что пользоваться я им даже не начал. Реакция интерфейса на действия пользователя по FMX-овски неспешная, если не сказать тормозная. Это уж точно не высший класс. В конце-концов приложение пришлось прибить т.к. при выходе случилось страшное (я долго ждал завершения, но так и не дождался):

sphere_at_exit

пятница, мая 10, 2013

Delphi. Ненависть.

Код (вызов представляющий собой каскад двух inlined методов):

xv.Initialize(bin.Instance);


Turbo Delphi 2006 Explorer генерирует:



XmlRpcDeserializerTest.pas.2634: xv.Initialize(bin.instance);
00526489 8D9524FFFEFF lea edx,[ebp-$000100dc]
0052648F 8D45E8 lea eax,[ebp-$18]
00526492 E88DA8FAFF call XmlRpcBinary.GetInstance
00526497 8B8524FFFEFF mov eax,[ebp-$000100dc]
0052649D 8945B0 mov [ebp-$50],eax
005264A0 A154784C00 mov eax,[$004c7854]
005264A5 50 push eax
005264A6 8D8558FFFFFF lea eax,[ebp-$000000a8]
005264AC B107 mov cl,$07
005264AE 8B55B0 mov edx,[ebp-$50]
005264B1 E89E37FAFF call XmlRpcValue.SetValueIntf


Delphi XE2 - XE4 генерирует:



XmlRpcDeserializerTest.pas.2634: xv.Initialize(bin.instance);
006C9E77 8D955CFFFEFF lea edx,[ebp-$000100a4]
006C9E7D 8D85C4FFFEFF lea eax,[ebp-$0001003c]
006C9E83 E8683DF6FF call XmlRpcBinary.GetInstance
006C9E88 8B9D5CFFFEFF mov ebx,[ebp-$000100a4]
006C9E8E 8D85E4FFFEFF lea eax,[ebp-$0001001c]
006C9E94 E8973FD4FF call @IntfClear
006C9E99 33C0 xor eax,eax
006C9E9B 55 push ebp
006C9E9C 684D9F6C00 push $006c9f4d
006C9EA1 64FF30 push dword ptr fs:[eax]
006C9EA4 648920 mov fs:[eax],esp
006C9EA7 8D85E4FFFEFF lea eax,[ebp-$0001001c]
006C9EAD E87E3FD4FF call @IntfClear
006C9EB2 33C0 xor eax,eax
006C9EB4 55 push ebp
006C9EB5 682D9F6C00 push $006c9f2d
006C9EBA 64FF30 push dword ptr fs:[eax]
006C9EBD 648920 mov fs:[eax],esp
006C9EC0 8D85E4FFFEFF lea eax,[ebp-$0001001c]
006C9EC6 8BD3 mov edx,ebx
006C9EC8 E87B3FD4FF call @IntfCopy
006C9ECD 33C0 xor eax,eax
006C9ECF 55 push ebp
006C9ED0 680D9F6C00 push $006c9f0d
006C9ED5 64FF30 push dword ptr fs:[eax]
006C9ED8 648920 mov fs:[eax],esp
006C9EDB A10C3B6200 mov eax,[$00623b0c]
006C9EE0 50 push eax
006C9EE1 8D85A0FFFEFF lea eax,[ebp-$00010060]
006C9EE7 B107 mov cl,$07
006C9EE9 8B95E4FFFEFF mov edx,[ebp-$0001001c]
006C9EEF E898C7F5FF call XmlRpcValue.SetValueIntf


Это п#$%&ц. Зарепортить не могу т.к. воспроизвести на другом коде не получается. Но подобное есть еще в паре мест, и тоже с разворачиванием inlined методов.

четверг, мая 02, 2013

Delphi XE4. Чем дальше, тем страшнее.

Кажется, у Embarcadero уже вошло в привычку выпускать сырые бета-версии и называть их релизами. Чтож, они испекли еще один. Судя по всему, делался он в дикой спешке – иначе объяснить настолько отвратительное качество просто нечем.

 

Firemonkey. Одно лечим, другое калечим.

В обезьяне произошли некоторые приятные изменения – анимация стала работать заметно лучше – и дело тут не в увеличенном вдвое фреймрейте - спасибо разделяемому RTTI-кэшу. Однако, для отсчетов временных интервалов по прежнему используется тип с малой точностью, поэтому на системах с большим аптаймом снова будут рывки.

Padding и Margins поменяли поведение на противиположное. Некоторые контролы переехали в другое пространство имен. В общем, переделки пользователям FMX, если такие отчаянные есть, обеспечены.

Формы FMX разучились сворачиваться в панель задач – клик по кнопке в панели ни к чему не приводит. Сворачивать можно только кнопкой в заголовке окна, но при этом форма сворачивается не в панель задачь, а в левый нижний угол над панелью.

В дизайнере не меняется шрифт у TText и TLabel. То есть изменение размера действует, а вот изменение названия нет.

Поправили TPath, теперь он справляется с довольно сложными контурами. Однако, TPath.WrapMode = pwFit работает некорректно. Сглаживание контуров под XP так и не сделали (она хоть и старушка, но все же третья по популярности ОС). Кстати, со сглаживанием вообще странность. В редакторе свойства TPath.Data контур оказывается сглаженным:

data_editor_normal

но стоит изменить размер окна, как сглаживание исчезает:

data_editor_resized

Поломали TreeView. Если у дерева вызвать метод TreeView.ExpandAll список узлов превращается в кашу (слева пример собранный в XE3, справа в XE4):

expanded_treeviews

Плюс еще множество мелких косяков, вроде визуальных артефактов, которые просто лень документировать. По общим ощущениям FMX становится все более неюзабельной. Небольшие улучшения ни коим образом не влияют на картину вцелом.