Итак, собственно сабж. Теоретически с таким, может быть, смогла бы справиться 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++).
Пока тестировал только одну кнопку - на ПК и телефоне. Короче, надо думать.