Блог Александра Божко
Архивы
Рубрики

Прочее

Выпуск технической литературы, посвященной тому или иному продукту, наверняка как ни что другое свидетельствует о росте его популярности. За последний год я делал обзор двух книг, посвященных Delphi. И вот сегодня я расскажу еще об одной книге – iOS/Android Application Development with Delphi.

На этот раз книга практически полностью посвящена мобильной разработке в Delphi. И это именно то, чего долго ожидали многие разработчики.

Конечно, книга отнюдь не дешевая ($48), особенно по нашим меркам. Хотя, для профессиональных разработчиков деньги вполне подъемные. Действительно, автор (Francisco Charte) приложил не мало усилий, и предпринял меры для того, что бы труд не пропал даром. Вы возможно удивитесь, но каждая копия книги персонифицирована. Да, через некоторое время после оплаты мне прислали книгу в формате pdf. Обложка и колонтитулы содержали текст: “This books belongs to Aleksandr Bozhko”. С одной стороны, даже как-то приятно. С другой появляется чувство, что я не потратил деньги на то, что “можно легко украсть”.

Теперь о самой книге. Она чем-то мне напомнила старые книги  Borland Press. Во-первых, наверное, своим внушительным объемом (почти 600 страниц). Во-вторых, структурой и методичностью изложения материала. Фундаментальное вступление затрагивает ещё историю возникновения Borland inc. В иные времена я бы счел это банальной “водой”. Но сейчас, на фоне ставших не редкими вопросов о судьбе Delphi, очень даже актуально. Впрочем, автор не злоупотребляет историческими экскурсами. За рамки введения они не выходят.

Основное содержимое книги разбита на три логические части. В первой рассказывается о т. н. мобильной экосистеме. Здесь вы найдете краткий обзор существующих аппаратных и программных решений для мобильных устройств, а так же существующих средств разработки. В принципе, полезный для разработчиков материал. Но нечто подобное вы найдете практически в любой книге, посвященной мобильной разработке. Вторая часть книги посвящена непосредственно мобильной разработке в Delphi. Она достаточно обширна и охватывает, как общие принципы построения мобильных приложений в Delphi, так и некоторые детали FireMonkey. По большому счёту, она может послужить отличным пособием для “быстрого старта”. Заключительная часть книги посвящена углубленному изучению наиболее интересных техник мобильной разработки в Delphi.

Полное оглавление книги приведено в pdf формате.

Судя по всему автор начал работать над книгой еще тогда, когда актуальной версией Delphi была XE5. Но весь материал адаптирован под XE7. Там где это необходимо, акцентируется внимание на отличиях в различных версиях Delphi.

Книга доступна на английском и испанском языках, что дает основание полагать, что оригинальный язык все же испанский. Английская версия написана очень не сложным языком и никаких особых трудностей для понимания, по крайней мере у меня, не вызвала.

Общее впечатление от книги у меня осталось весьма положительное, рекомендую.

Компания Embarcadero приглашает принять участие в конкурсе разработки мобильных приложений “Весенний марафон“.

В соответствии с правилами, участники конкурса должны создать приложение с использованием RAD Studio XE7.
Срок подачи заявок – до 1 апреля 2015, окончание конкурса – 15 мая.

Победители конкурса получат ценные призы.

Подробности на официальном сайте конкурса

 

Прежде всего хочу поздравить всех читателей блога с прошедшими праздниками и пожелать всего наилучшего в наступившем году.

В силу понятных обстоятельств я не стал делать традиционный новогодний отчет, как и строить какие-либо планы на год. Тем не менее, жизнь не стоит на месте, работа работается, и определенные события в мире Delphi происходят. Подборку пропущенных “новостей из мира Delphi” за время рождественских каникул обязуюсь опубликовать в ближайшее время. А пока расскажу о новом аппарате, который я приобрел.

Sony Xperia™ M2

С характеристиками вы можете ознакомиться на официальном сайте. А субъективное впечатление весьма приятное. Обращает на себя внимание тот факт, что аппарат буквально напичкан фирменным софтом от производителя. Да и от продавцов достался в подарок внушительный комплект софта. В работе смартфон достаточно шустр и вполне оправдывает свою стоимость (примерно $200). К слову, свой предыдущий телефон GSmart 1362 я покупал примерно за те же деньги 2 года назад. Но, как вы, наверняка, догадались, основной интерес для меня заключался в том, как будут работать FireMonkey приложения.

Разработку я веду в XE7 на HP Envy 23 d254er с предустановленной Windows 8.1. Последнее обстоятельство, конечно же создает проблемы при установке драйвера. В очередной раз выручил пост и видеоролик Jim’а McKeeth.

Читать далее

Казалось бы количество версий Delphi перевалило за два десятка, и уж белых пятен, по крайней мере  относительно функций даты и времени, быть не должно. Действительно, появившийся, если не ошибаюсь, в Delphi 7, модуль DateUtils, казалось бы снимает все вопросы. Однако, не тут то было!

В доставшемся мне от предшественников проекте я тщательно вычистил функции подобные StartOfTheWeek или StartOfTheDay. Первая версия проекта была написана, похоже, на Delphi 5, в которой DateUtils просто еще не было. Потом этот модуль появился, а я, унаследовав проект, решил, что нет смысла таскать “лишний” код, а проще подключить DateUtils. И вот недавно я получил получил забавный баг. Приложение определяет всегда первый день недели – понедельник. Хотя, у большинства пользователей первым днем является воскресенье.

Первым делом проверил StartOfTheWeek, и с удивлением обнаружил, что и в самом деле, функция всегда возвращает начало понедельника, в качестве результата. А соответствующий справки содержит следующую ремарку:

Note:StartOfTheWeek defines the week of AValue according to the ISO 8601 standard. That is, the week starts on Monday and ends on Sunday.

Лично мне не совсем понятно, почему данная функция реализована именно так, тем не менее, факт остается фактом. Но, как в свое время говаривала Лия Ахиджакова: “Надо что-то с этим делать, бороться как-то!”

Смотрим код функции:

function StartOfTheWeek(const AValue: TDateTime): TDateTime;
begin
  Result := Trunc(AValue) - (DayOfTheWeek(AValue) - 1);
end;

Как видим, в коде используется функция DayOfTheWeek, которая так же считает, что первым днем недели является понедельник. Код функции такой:

  Читать далее

lost_timerПрежде чем продолжить рассказ о таймере – две новости.

Во-первых, вышел первый апдейт XE7. По традиции он доступен зарегистрированным пользователям. Список исправленных багов вы можете найти здесь. Мне хотелось посмотреть как поведет себя приложение в обновленной среде. Собственно, никаких исправлений вносить не пришлось, хотя поле для экспериментов осталось.

Вторая новость. Действие специальных предложений Embarcadero продлено до конца года:

  • возможен апгрейд с любой старой версии на новую версию XE7: Delphi, C++ Builder и RAD Studio.
  • покупатели редакций Enterprise, Ultimate и Architect получают бесплатную лицензию Rapid SQL XE6.

Ну, а теперь непосредственно к теме поста. В принципе, все, что нам осталось – попытаться запустить уже созданное приложение под Android. Для это используем то, о чем я писал в предыдущих постах. А именно новый FireUI. Я отлаживал данное приложение на Nexus 7, соответственно добавил представление Android 7″ Tablet. Дизайн пришлось “подрихтовать” лишь самую малость.

Читать далее

5Время летит быстро. Казалось, совершенно недавно я писал небольшой пост, гадая получится проект или нет. Однако, прошло 5 лет. Можно подводить некоторые итоги.

Да, действительно, многие из тех, кто писал о Delphi забросили свои блоги или пересели на другие среды сразработки. Зато появились новые интересные блогеры. Поддержка Android подхлеснула активность среди блогеров.

Если смотреть на статистику, то несколько сотен человек регулярно “приходят за новостями”, на DelphiFeeds. Думаю, сам этот уже факт оправдывает существование сайта. Конечно, хотелось бы развить сайт, и из банального сборщика ссылок сделать полноценное сообщество, но, увы, не хватает ни времени ни сил. Поэтому в ближайшее время никаких изменений не предвидится. Хотя, идеи на сей счет, по прежнему приветствуются.

К сожалению, как многие справедливо замечали, подобная автоматизация не позволяет полностью охватить все те материалы, посвященные Delphi, которые публикуются в Рунете. Иногда попадаются интересные статьи из не тематических блогов, иногда – “неформат”. Причины “непопадания” блогов в ленту разные. Дабы как-то устранить этот пробел я завел специальную рубрику у себя в блоге.

Не знаю, насколько хватит у меня энтузиазма делать еженедельные “выжимки”, но пока стараюсь. Буду благодарен авторам тематических публикаций и разработчикам Delphi компонентов за помощь, в виде присылаемых ссылок на публикации и новости. Да и вообще, хотелось бы понять нужна ли подобная рубрика. Жду ваших отзывов.

И, возвращаясь к DelphiFeeds, конечно, хочу поблагодарить всех Delphi блоггеров. Без вас этот проект бы не состоялся, а то, о чем вы пишите, действительно интересно и полезно.

В прошлой части мы практически полностью реализовали логику приложения. Сейчас я хочу рассказать о, возможно, самой интересной части разработки приложения. Построении пользовательского интерфейса. Если вы еще не в курсе, что такое FireUI, то, вероятно удивитесь, что большая часть работы по построению и отладке GUI Android приложения будет производится в Windows, без использования мобильного устройства. Субъективно, я в восторге. Это быстро, удобно и во всех отношениях легко.

Приступим…

Итак, у нас есть чистая (в смысле используемых стилей) форма, с четырьмя кнопками и меткой TLabel. Конечно у меня, изначально было  искушение бросить на форму TStyleBook, а метку отобразить каким-нибудь диковинным шрифтом. Посмотрев на приложение Владимира Тимофеева я отказался от этой идеи. Подобную красоту придется рисовать руками. Или немного схитрить, используя возможности библиотеки классов FireMonkey. Я выбрал второй вариант. Немного погуглив по слову Scoreboard, я нашел на коммерческом стоке графических изображений симпатичный алфавит, дополненный цифрами.

Digital alphabetic

Так выглядит выбранный мною клипарт. Вооружившись чувствительной мышкой и терпением я вырезал из него цифры. Читать далее

О строках в мобильных приложениях уже писали, и, наверное не раз, но как-то все-равно осталось не замеченным. По крайней мере я почему-то не принял к сведению, хотя задним числом и вспомнил, что читал. Поэтому “пост-напоминалка”.

Предположим, есть есть FireMonkey приложение и такой код:

procedure TfMainTexturesTest.Button1Click(Sender: TObject);
var
s: string;
begin
   s:= 'Нет войне! Даешь рок-н-ролл!';
   ShowMessage(s[1]+' '+s[5]+' '+s[12]);
end;

При запуске в Windows результат будет очевидным:

StringTestWin

Попробуем запустить приложение под Android:

StringTestDroid

Очевидно, что в первом случае индексация символов в строке начинается с 1, а во втором с нуля. Сделано так не случайно, этимология данного вопроса рассмотрена в блоге у Александра Алексеева. Настоятельно рекомендую к прочтению.

И в заключение о совместимости кода. Директива компилятора $ZEROBASEDSTRINGS.

Если мы, к примеру принудительно поставим

{ZEROBASEDSTRINGS ON},

то и Windows и Android приложения отработают так. как показано на втором рисунке.

Так что. будьте бдительны, данный нюанс нужно учитывать. во избежание ошибок.

PS

Данный пост стал возможен благодаря Владимиру, электрику из  Харькова, который не дал мне остаться без электричества.

Embarcadero

Rodrigo Ruz

Marco Cantu

Bruce McGee

Jeroen Pluimers

The Programming Works

 

Семен Хмелёв

Роман.Янковский

Владислав Баженов

 

Embarcadero

 

Marco Cantu

Malcolm Groves

David I

Tim Del Chiaro

Sarina Dupont

Malcolm Groves

Nick Hodges

Jeroen Pluimers

Daniele Teti

Vincent Parrett

Nick Hodges

 

 EurikaLog

DevArt

 

Александр Люлин

Андрей Терехов

Николай Зверев

 

Продукты DevArt
Купить онлайн:



Читай русскоязычные Delphi блоги
Каталог блогов Blogdir.ru
Яндекс.Метрика