Универсальные приложения Windows 10 (и 10 Mobile) на Паскале

Вопросы использования сторонних (не входящих в состав FPC и Lazarus) утилит и библиотек.

Модератор: Модераторы

Универсальные приложения Windows 10 (и 10 Mobile) на Паскале

Сообщение daesher » 02.10.2017 13:52:04

Итак, собственно сабж. Теоретически с таким, может быть, смогла бы справиться Delphi, но она коммерческая и дорогая (а та, что бесплатна - только win32, не наш путь).
FreePascal не имеет платформы .net и тем более - appx, хотя в перспективе можно было бы попробовать создать транслятор вместо ассемблера в низкоуровневый C (который можно попробовать всякими #define "извратить" почти до псевдоассемблера)... Кто бы этим занялся...
PascalABC.Net генерирует код для традиционного .net, не для универсальных приложений, и связать их не удалось.
Поэтому на настоящий момент я остановился на древнем p2c (отыскал его на каких-то зеркалах). Он генерирует код из исходников уровня TurboPascal 5.5 в C/C++, но не без багов и нюансов.
https://yadi.sk/d/xtLK-0Es3NPWkZ
Далее - используя этот транслятор, я попытался создать в VisualStudio-17 проект-проброс возможностей в паскалевский код.
Сишники, конечно, будут плеваться (особенно по тому поводу, КАК я включаю оттранслированные файлы в код), увидев мой код - но я не сишник ни в коей мере, пусть поправят, где неоптимально.
Пока мой код - это концепт, не более того (и, тем не менее, первые результаты уже есть - тест работает и на ПК, и на телефоне с Windows 10 Mobile). Но помощь сишников могла бы быть незаменимой.
https://yadi.sk/d/D6wOLXFp3NPXuo
Итак, включённые pas-файлы редактируются, например, в Lazarus (в папке Dummy есть проект), транслируются в С (файл настроек по минимуму приведён в проекте) и "скармливаются" VS2017. Основной текст проекта - в файле prj.pas/prj.c
Работают только кнопки - размеры, OnClick и текст на них.
Не работают:
- Настоящие обработчики событий (надо разобраться, что "скормить" p2c, чтобы получить на выходе рабочий указатель на метод, пока обработчики - только процедуры вне объектов)
- Виртуальные методы. Теоретически, они есть, но, по всей видимости, требуют реализации VMT (С++-совместимой!) в TObject (которого нет в p2c вообще!). Без этого смысла в ООП пока мало. Временное обходное решение - "#define virtual "
- Все остальные классы (здесь - объекты).
- Свойства. Пока реализован обход проблемы через поля и SetState.
- Классы для полноценной CL. Но здесь уж делать нечего, это не уровень p2c.
Работают по-дурацки:
- Выделение/освобождение памяти указателей (в т.ч. объектов). Теоретически, в p2c это есть, но мне не удалось запустить встроенное new. Справился с помощью макросов, в т.ч. в p2c.h.
- Приведение типов (код из p2c не всегда работает в C++).

Пока тестировал только одну кнопку - на ПК и телефоне. Короче, надо думать.
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение olegy123 » 02.10.2017 14:14:24

daesher писал(а):Далее - используя этот транслятор, я попытался создать в VisualStudio-17 проект-проброс возможностей в паскалевский код.
елы факен палы..

Lazarus же может делать win64 код? в чем проблема..

Добавлено спустя 48 секунд:
Re: Универсальные приложения Windows 10 (и 10 Mobile) на Паскале
если нужно писать в .Net
http://wiki.freepascal.org/Using_Pascal ... T_and_Mono
olegy123
энтузиаст
 
Сообщения: 650
Зарегистрирован: 25.02.2016 12:10:20

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение daesher » 02.10.2017 14:21:21

olegy123 писал(а):Lazarus же может делать win64 код? в чем проблема..

Да не о том речь вообще! Речь об универсальных приложениях. Для ПК, телефона на Windows 10 Mobile и т.п. Это - не приложения Win32/Win64, они не будут работать в Windows 7. Если это не нужно лично Вам - это не значит, что не нужно всем остальным.
если нужно писать в .Net
http://wiki.freepascal.org/Using_Pascal ... T_and_Mono

И опять немного не то. Вызвать стороннюю библиотеку из универсального приложения для Win32/64, пожалуй, можно (при этом приложение перестанет быть универсальным, но уж ладно). Но как быть на остальных платформах? Опять "не нужно"?
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение Лекс Айрин » 02.10.2017 14:42:40

daesher писал(а): Но как быть на остальных платформах? Опять "не нужно"?


Как и всегда -- условная компиляция.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4018
Зарегистрирован: 19.02.2013 16:54:51

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение daesher » 02.10.2017 14:46:09

Лекс Айрин писал(а):Как и всегда -- условная компиляция.

И каким образом можно "условно откомпилировать" (да хотя бы и безусловно) код на FPC под Windows 10 Mobile? Подозреваю, что "пока никак".
Вообще, полноценная среда программирования должна поддерживать как можно больше платформ. И полное отсутствие поддержки AppX у FPC - это отнюдь не плюс даже в мире "только Windows на ПК". Да, жить пока можно - но выглядит примерно так, как если бы где-то около 2000-го года имелся бы хороший инструмент для разработки только приложений Win16. Тоже ведь можно было жить...
Последний раз редактировалось daesher 02.10.2017 14:49:32, всего редактировалось 1 раз.
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение serbod » 02.10.2017 14:49:15

daesher писал(а):Речь об универсальных приложениях. Для ПК, телефона на Windows 10 Mobile и т.п.

Расскажите подробнее про "и т.п.", где еще будут работать универсальные приложения, кроме Windows 10 (где WinAPI вполне работает) и Windows 10 Mobile, у которой доля рынка 0,1% и продолжает стремится к нулю.
Аватара пользователя
serbod
постоялец
 
Сообщения: 185
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение daesher » 02.10.2017 14:56:05

serbod писал(а):Расскажите подробнее про "и т.п.", где еще будут работать универсальные приложения, кроме Windows 10 (где WinAPI вполне работает)

Win16 тоже работала в Windows 9x. Да и в NT с некоторым "скрипом".
Да, Windows 10 ограничена (хотя в перспективе кроме неё всё будет заброшено), но это и WinRT, и Windows S.
serbod писал(а):Windows 10 Mobile, у которой доля рынка 0,1% и продолжает стремится к нулю.

Это да (если не говорить о доле фактически работающих устройств, там будет около процента), но, кстати, прежде всего, из-за того, что нет приложений... А их нет в т.ч. и потому, что писать не на чем.
Кстати, Lazarus и в Android "не очень, чтобы очень" - нет, собрать что-то уровня повыше такого теста получится, но полноценно работающая среда... Не знаю, может, сейчас и лучше, раньше - не впечатлило.
Короче, надо стремиться расширять список платформ, а не говорить "здесь и так можно запустить, а это вообще не нужно". Так в итоге можно как раз потерять всё, что было.
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение Лекс Айрин » 02.10.2017 16:26:14

daesher писал(а):И каким образом можно "условно откомпилировать" (да хотя бы и безусловно) код на FPC под Windows 10 Mobile? Подозреваю, что "пока никак".

К сожалению, это вопросы не к нам(((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4018
Зарегистрирован: 19.02.2013 16:54:51

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение SSerge » 03.10.2017 06:15:39

daesher писал(а):надо стремиться расширять список платформ, а не говорить "здесь и так можно запустить, а это вообще не нужно".

взглянем на официальную точку зрения: ввиду нехватки специалистов, способных поддерживать направления, объявлено официальное закрытие поддержки Win98, NT, WIn2000 ввиду того, что поддержка этих динозавров тормозит общее развитие проекта. DOS самим компилятором уже достаточно давно игнорится.

смотрим на это:
https://support.microsoft.com/en-us/lif ... FilterNO#;

...и видим перспективы развития самой ОС.

imho, если так уж надо зачем-то писать для нераспространенной фактически мёртвой платформы, я бы воспользовался штатными средствами программирования в лице VS Community, которую раздают бесплатно
SSerge
энтузиаст
 
Сообщения: 795
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение daesher » 03.10.2017 10:51:44

SSerge писал(а):взглянем на официальную точку зрения: ввиду нехватки специалистов, способных поддерживать направления, объявлено официальное закрытие поддержки Win98, NT, WIn2000 ввиду того, что поддержка этих динозавров тормозит общее развитие проекта.

Правильно, 9x уже умерла, 2k тоже. Вопрос о более или менее актуальных платформах.
SSerge писал(а):смотрим на это:
https://support.microsoft.com/en-us/lif ... FilterNO#;

...и видим перспективы развития самой ОС.

И видим, что каждая версия живёт 2-2,5 года (кстати, если надо - они могут продлить). Вот-вот ожидается осенняя версия новой "десятки" (как для ПК, так и мобильной, в сентябре был выпуск Insider Preview), т.е. + ещё полгода. Что будет дальше - неизвестно, но платформа-таки жива. Но дело не только в этом: если мы говорим об универсальных приложениях, то это ведь и приложения для обычной ПК-шной десятки, вписывающиеся в её интерфейс. Получится-не получится у Microsoft увеличить их роль - неизвестно, но раньше ведь тоже очень скептически относились... То к Windows вообще, то к платформе NT (на фоне 98-й она действительно смотрелась не очень). В любом случае, платформу лучше поддерживать (а то ещё со времён ранней восьмёрки всё задают вопрос "может ли fpc создавать приложения Metro/Modern App/Appx" с постоянным ответом "нет").
К тому же, перспектива достаточно серьёзная: многие новые платформы имеют среду разработки на C++, С# и даже VB - а полноценного паскаля там нет (правда, вот для jvm сделали паскаль - и что, Lazarus это принял? Нет, для андроидовского интерфейса крутят CustomDrawn в режиме NativeApp, который платформенно зависим, в итоге программы выглядят "белыми воронами" и жутко тормозят).
С другой стороны, связка VisualC++ - p2c мне и самому не нравится, половина вещей работает криво. К сожалению, лучшего я пока не нахожу. Куда интереснее будет связка fpc->asm->С или VB.
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение Лекс Айрин » 03.10.2017 11:41:59

daesher писал(а):правда, вот для jvm сделали паскаль - и что, Lazarus это принял? Нет, для андроидовского интерфейса крутят CustomDrawn в режиме NativeApp, который платформенно зависим, в итоге программы выглядят "белыми воронами" и жутко тормозят


Не стоит забывать, что Lazarus это довольно специфическая библиотека/среда заточенная под совместимость с дельфи. С этим, собственно, и связаны проблемы совместимости с мобильными платформами. Фактически, для них придется делать свой набор компонент, но этого никто не хочет делать. Возможно, ты решишься, но что-то подсказывает, что тоже решишь использовать связки нестандартных инструментов.
Насчет зависимости/независимости... любой аппаратно-независимый инструмент внутри делится на аппаратно-зависимые модули. Вот только при этом некоторые фишки иногда выпадают.

fpc jvm, к сожалению, еще недостаточно полно поддерживается, поэтому его использование только на свой страх и риск... возможно, потом и перейдут, но только когда поддержка будет почти полной. Так что использование NativeApp, на данном этапе, вполне нормальное явление.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4018
Зарегистрирован: 19.02.2013 16:54:51

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение serbod » 03.10.2017 12:16:28

daesher писал(а):И видим, что каждая версия живёт 2-2,5 года

У некоторых программ цикл разработки 2 года и больше. Получается, что к моменту выпуска программы, система под которую она написана уже устарела и не известно, будет ли поддерживаться. Это фиаско, братан!
Аватара пользователя
serbod
постоялец
 
Сообщения: 185
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение daesher » 03.10.2017 12:49:59

serbod писал(а):У некоторых программ цикл разработки 2 года и больше. Получается, что к моменту выпуска программы, система под которую она написана уже устарела и не известно, будет ли поддерживаться. Это фиаско, братан!

И в чём проблема? Разработали программу для предыдущей стабильной сборки, вышла новая, программа под ней заработала как под родной (но вот какую-то нововведённую фичу ещё не использует). Обратная совместимость же!
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение Лекс Айрин » 03.10.2017 13:01:20

daesher писал(а): Разработали программу для предыдущей стабильной сборки, вышла новая, программа под ней заработала как под родной (но вот какую-то нововведённую фичу ещё не использует).


Не факт. Бывает, что часть используемого функционала просто вырезают и выкидывают в корзину.... например, как "меню пуск" в win8. Причем, неизвестно какая часть будет в будущем изъята((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4018
Зарегистрирован: 19.02.2013 16:54:51

Re: Универсальные приложения Windows 10 (и 10 Mobile) на Пас

Сообщение daesher » 03.10.2017 13:02:09

Лекс Айрин писал(а):Не стоит забывать, что Lazarus это довольно специфическая библиотека/среда заточенная под совместимость с дельфи. С этим, собственно, и связаны проблемы совместимости с мобильными платформами. Фактически, для них придется делать свой набор компонент, но этого никто не хочет делать.

Разумеется, набор компонентов нужен. Желательно взять платформенные компоненты и пробросить их в LCL (иначе программа будет выглядеть криво, а работать - медленно). Проблема в том, что сильно замудрили интерфейсы, новый создать сложно. Но речь не об этом, а о том, что универсальный для андроида Dalvik/APT не используют, а ради прикладного ПО (с кнопочками) "пилят" нативный код, который предназначен, по большому счёту, не для интерфейса, а для графики и изредка - расчётов.
Лекс Айрин писал(а):Возможно, ты решишься, но что-то подсказывает, что тоже решишь использовать связки нестандартных инструментов.

Только так, и вряд ли что больше. Во-первых, у меня один инструмент - p2c. Для FPC нужно писать транслятор в C (вместо ассемблера), с чем я, боюсь, не справлюсь (прежде всего, CALL). Во-вторых, я - не сишник от слова вообще. Несколько часов убил на преобразование от переменной-предка к фактически содержащемуся в ней потомка, reinterpret_cast не работал (оказалось, нужен специфический вызов dynamic_cast). В Паскале, кстати, если знаешь, что делаешь, можно преобразовать что угодно к чему угодно как минимум, двумя способами. p2c с этим уже не справится (потому что не справится VisualC++). Так что у меня теперь два абсолютных, беспросветных тупика:
1. Виртуальные методы (уж чего им нужно - не знаю, но всякий их вызов приводит к сегфолту).
2. Обработчики событий - только вне объекта.

Добавлено спустя 1 минуту 43 секунды:
Re: Универсальные приложения Windows 10 (и 10 Mobile) на Паскале
Лекс Айрин писал(а):Не факт. Бывает, что часть используемого функционала просто вырезают и выкидывают в корзину.... например, как "меню пуск" в win8. Причем, неизвестно какая часть будет в будущем изъята((

Ну, это - особенности интерфейса. Если писать программу, которая нужна только для лучшей организации кнопки "Пуск" - то да, может быть проблема. Если же эта программа просто что-то туда добавляла - проблем не возникало (кнопка-то уже не та, но менюшка просто хорошо спрятана).
daesher
постоялец
 
Сообщения: 204
Зарегистрирован: 09.03.2010 22:17:14

След.

Вернуться в Сторонние средства

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru