Как стать автором
Обновить

Delphi XE 2. Приложения под Windows, Mac OS и iOS



Да, вам не показалось — в одном заголовке рядом Delphi и Mac OS. Не смотря на то, что многие на хабре, да и вообще, уже давно «похоронили» Delphi, её разработчики каждый год обновляют свой продукт и на этот раз — удачно…

Здесь можно было бы рассказать какая у Delphi интересная история, как всё развивалось и «завивалось», но не буду, все и так знают какая это история… Поэтому, лучше процитирую часть комментария хабрапользователя:
Ребята просрали все полимеры, однозначно.

Это в точности отражает, что происходило последние годы с Delphi. И кто с этим не согласится? Но вот недавно, была выпущена новая версия. С весьма заметными изменениями:
  • 64-битный компилятор для Windows;
  • поддержка Mac OS и iOS;
  • FireMonkey;
  • LiveBindings;
  • FastReport;
  • Documentation Insight теперь часть IDE;
  • полный список.

Собственно, самое интересное это первые три пункта. О них и поговорим, а также сделаем программу в Windows, скомпилируем и запустим в Mac OS.

В общем-то, в плане интерфейса IDE мало что изменилось с последних версий и, это наверно хорошо, нет необходимости искать старые команды в новых меню. Хотя для нашего тестирования особых знаний среды и не потребуется. Поэтому, не будем тянуть, и сделаем тестовое приложение. Процесс, нахождения дистрибутива и установки, думаю можно пропустить :)



Как видно на скриншоте, в окне создания проекта появились новые типы приложений. Помимо известного VCL Forms Application, появились приложения FireMonkey. Вот они то нам и нужны. Как говорится: «Не знаешь 2D – не лезь в 3D», поэтому выбираем FireMonkey HD Application и создаем проект.

FireMonkey


Небольшая справка, что такое FireMonkey.
Это новая платформа для создания приложений под Windows, Mac OS и iOS. Новая она для Embarcodero, потому что создателем являлась компания KSDev, а сама библиотека называлась VG-Scene. Потом Embarcodero купила её и сделала частью FireMonkey.

В отличии от обычных VCL компонентов, компоненты FireMonkey являются контейнерами. Это позволяет создавать свои компоненты на основе уже имеющихся, буквально движением мыши, а с помощью встроенного редактора стилей вы сможете дать своему приложению поддержку скинов. Я уже не говорю про кучу всяких эффектов в FireMonkey: затухание, размытие и т. д. Все уже сделано, можно пользоваться. Ну конечно же — возможность всё это скомпилировать и отладить в Mac OS. Интересно? Продолжим.

Тестовое приложение


Напишем небольшое приложение, которое получает HTML код указанной страницы, сохраним его и запустим в Windows. Тут ничего чудесного нет, разве что исполняемый файл, стал меньше по сравнению с XE. Да-да, обычно было наоборот, с каждой новой версией Delphi ехешник с пустой формой добавлял килобайтов. Это так, приятная мелочь, самое интересное впереди.



Для того чтобы проверить наше приложение в Mac OS, запустим её в виртуальной машине (VMware), т. к. рабочего мака под рукой нет. Кстати, при тестировании в виртуальной машине возникли некоторые проблемы с графикой, о них ниже.

Для отладки в Mac потребуется PAServer – Platform Assistant Server, установщик можно взять из директории Delphi. Копируете на Mac, устанавливаете и запускаете через paserver.command. Более подробно можете прочитать в документации. Этих действий достаточно чтобы приложение запустилось.



Теперь нужно добавить дополнительную платформу к нашему проекту. Возвращаемся в Windows и Delphi. Жмете правой кнопкой на «Target Platforms» в узле проекта и добавляете OS X. Там же есть и 64-битная версия под Windows.



После этого нужно создать профиль отладки. Жмете правой кнопкой по только что добавленой OS X и создаете новый профиль. В окне настройки профиля нужно указать адрес, порт и пароль (если задавали) к маку с PAServer’ом. После создания, делаем новый профиль активным.



Всё. Билдим проект и запускаем. Если вы запускаете через VMware, то очень может быть что приложение не запустится. Там есть какие-то траблы с графикой в VMware, поэтому нужно сделать несколько несложных манипуляций:
  1. Скопировать юнит FMX.Filter.pas в папку с проектом;
  2. Изменить в этом юните две функции;
  3. Установить в проекте переменную FMX.Types.GlobalUseHWEffects := False перед инициализацией.

function FilterByName(const AName: string): TFilter;
var
i: Integer;
begin
Result := nil;
if Filters = nil then
Exit;
if GlobalUseHWEffects then
begin
for i := 0 to Filters.Count - 1 do
if CompareText(TFilterClass(Filters.Objects[i]).FilterAttr.Name, AName) = 0
then
begin
Result := TFilterClass(Filters.Objects[i]).Create;
Exit;
end;
end;
end;

function FilterClassByName(const AName: string): TFilterClass;
var
i: Integer;
begin
Result := nil;
if Filters = nil then
Exit;
if GlobalUseHWEffects then
begin
for i := 0 to Filters.Count - 1 do
if CompareText(TFilterClass(Filters.Objects[i]).FilterAttr.Name, AName) = 0
then
begin
Result := TFilterClass(Filters.Objects[i]);
Exit;
end;
end;
end;


Пробуем ещё раз.



Собственно, «вот до чего техника дошла» (с). Сделали программу в Delphi на Windows и работаем в Mac OS – не изменив ни строчки кода. Для компиляции под iPhone и iPad, необходимо уже экспортировать проект и xCode, но это я думаю в другой статье.

Теперь вы можете достать из архивов свои старые игры на Delphi и попробовать переделать их на iOS. Удачи в экспериментах!

Скачать проект
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.