Comments 17
Мне удалось скомпилировать для Web небольшой проект Delphi, внеся сравнительно небольшие изменения в исходный текст программы, а на сэкономленное время я написал эту статью. Тестирование показало, что обе версии программы: для Windows и для Web, работают абсолютно одинаково.Где можно посмотреть исходный delphi-проект и полученный web-проект?
Проект касается лингвистического программирования и обработки текстов. Что-то вроде «Транскриптора» Артемия Лебедева, но с белорусской спецификой. То есть там в основном текстовая обработка, символы… Delphi-модуль задействован как часть большей системы, а Web-модуль после доработки функционала будет позже где-то доступен. Пока не решено, тестируем небольшой комьюнити.
Но тут вопрос не в конкретной программе, а в возможности задействовать свои знания Delphi для Web-разработки. И это здорово!
Но тут вопрос не в конкретной программе, а в возможности задействовать свои знания Delphi для Web-разработки. И это здорово!
Можно отладить модули приложения в Delphi IDE, используя его мощный отладчик и редактор, и затем, добавив необходимую обвязку, получить готовое работающее приложение для сайта.
Как вы гарантируете идентичность поведения исходного приложения и сконвертированного варианта?
(я, если честно, не видел еще ни одного трансформера windows-web, который бы переживал хоть сколько-нибудь сложные сценарии)
На вход подаём одинаковые тексты, на выходе получаем другие тексты, сравниваем. Совпадает — значит, OK.
Это вы так сравниваете простой алгоритм. А как гарантировать коректность приложения?
Если под приложением понимать 1) GUI часть + 2) внутреннюю обработку, то для 1) с PAS2JS нет решения. У нас транспилируются из Delphi только модули, отвечающие за обработку информации.
Чтобы получить одинаковый код и для интерфейса пользователя, придётся воспользоваться другими решениями. Например, TMS Web Core, у которого под капотом тот же PAS2JS.
Чтобы получить одинаковый код и для интерфейса пользователя, придётся воспользоваться другими решениями. Например, TMS Web Core, у которого под капотом тот же PAS2JS.
Если под приложением понимать 1) GUI часть + 2) внутреннюю обработку,
Ну… да. Это же приложение, а не модуль.
с PAS2JS нет решения
Понятно, ничего нового опять не произошло.
Я понимаю, что не открыл своей статьёй Америку, но может кто-то попадал на такие же грабли. Или у кого-то были свои проблемы с PAS2JS, которые удалось решить. Очень интересно было бы почитать.
Я использовал UniGUI. Для небольших проектов вполне работает, но чем больше проект, тем больше неожиданных и непредсказуемых багов появляется.
Delphi хорош для нативного ПО, но не для WEB.
В последних RAD Studio с использованием FireMonkey можно написать отлично работающие мульти-платформенные приложения (win32, win64, linux, android, OSx, iOS). Было бы классно, если бы они придумали какую-нибудь HTML5 обёртку для WEB…
Delphi хорош для нативного ПО, но не для WEB.
В последних RAD Studio с использованием FireMonkey можно написать отлично работающие мульти-платформенные приложения (win32, win64, linux, android, OSx, iOS). Было бы классно, если бы они придумали какую-нибудь HTML5 обёртку для WEB…
если не нужно работать с DOM, то не логичнее было сделать транспиляцию в WASM, а не JS? или PAS2JS — проект старый и тогда WASM ещё не было?
Судя по багтрекеру Free Pascal, баги на PAS2JS начали сабмитить с лета 2017 года. А «Вики» для него была создана в декабре 2017 г. Но не исключено, что этот проект был создан на основе ещё более ранних разработок.
Транспиляция в JavaScript более удобная и гибкая, если нужно что-то проверить на готовой HTML-странице, поправить руками. Это удобство для разработчика. Хотя WASM должен быть быстрее, что выгоднее пользователям. Компилятор из Delphi-подобного языка в байткод WebAssembly тоже существует, с января 2018 года, но он не бесплатен.
Транспиляция в JavaScript более удобная и гибкая, если нужно что-то проверить на готовой HTML-странице, поправить руками. Это удобство для разработчика. Хотя WASM должен быть быстрее, что выгоднее пользователям. Компилятор из Delphi-подобного языка в байткод WebAssembly тоже существует, с января 2018 года, но он не бесплатен.
Чтобы сконвертировать проект из Delphi в JS надо переписать половину исходного проекта, чтобы конвертер это понял? Вы серьёзно?
А сколько ещё интересного Вам предстоит! Вы знаете про var-аргументы функций, например?
А сколько ещё интересного Вам предстоит! Вы знаете про var-аргументы функций, например?
Обнаруженные в статье баги я отправил в багтрекер проекта Pas2JS, и на данный момент они уже взяты в работу!
Thank you, Mattias Gaertner!
- https://bugs.freepascal.org/view.php?id=34923
- https://bugs.freepascal.org/view.php?id=34924
- https://bugs.freepascal.org/view.php?id=34925
Thank you, Mattias Gaertner!
Кросс-компилятором это называется.
Sign up to leave a comment.
Транспилятор PAS2JS из Паскаля в JavaScript: несовместимости с Delphi и пути обхода