forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Canterbury Pascal for J2ME (http://forum.boolean.name/showthread.php?t=6028)

Piligrim 18.06.2008 00:17

Canterbury Pascal for J2ME
 
Вложений: 2
Основной архив: pascal.zip, собственно, паскаль и дополнения для компиляции под j2me
Утилиты для автоматизации сборки готовых программ и удобства: ant и proguard

Для компиляции проекта нужно запустить скрипт, например если вы все распакуете в d:\pascal, то тестовый проект соберется командой
d:\pascal\ant\bin\ant
выполненной из папки d:\pascal\Projects\test

Если вы распакуете архив в другую папку скорректируйте пути в файле-скрипте build.xml в папке проекта

Для удобной работы нужен конечно еще эмулятор и документация по j2me. Теперь вы можете реализовать все на паскале!

PS: не могу залить ant.zip (3.3Мб). Кто знает почему?

ViNT 18.06.2008 00:39

Ответ: Canterbury Pascal for J2ME
 
Цитата:

Сообщение от pilgrim (Сообщение 81103)
PS: не могу залить tools.zip (3.8Мб). Кто знает почему?

Может общее количество вложений преывшено?
Tools.zip это Tools.jar из jdk?

Piligrim 18.06.2008 01:21

Ответ: Canterbury Pascal for J2ME
 
нет, это просто ant и proguard. если есть, можно использовать имеющиеся.

ViNT 18.06.2008 01:30

Ответ: Canterbury Pascal for J2ME
 
Цитата:

Сообщение от pilgrim (Сообщение 81106)
нет, это просто ant и proguard. если есть, можно использовать имеющиеся.

Если в поставку JB2005 не входят, то нету.
Где скачать можно?

Piligrim 18.06.2008 12:41

Ответ: Canterbury Pascal for J2ME
 
Apache Ant: http://ant.apache.org/, утилита для автоматизации компиляции и сборки готовой программы, полный весит прилично, больше 10Мб
Proguard: http://proguard.sourceforge.net/, обфускатор и оптимизатор, 2Мб, добавил минимальную версию в первое сообщение.

ViNT 18.06.2008 15:30

Ответ: Canterbury Pascal for J2ME
 
Без ant как я понимаю вообще ничего не получится?

Piligrim 18.06.2008 16:11

Ответ: Canterbury Pascal for J2ME
 
Скомпилировать классы получится:
set CLASSPATH=d:\pascal\pas3.zip;d:\pascal;d:\pascal\l ib\midapi20.jar;d:\pascal\lib\cldcapi10.jar
java mhc.compiler.pas test.pas

А вот преверификация и сборка уже руками. Просто неудобно.

ViNT 18.06.2008 18:55

Ответ: Canterbury Pascal for J2ME
 
Вложений: 10
pilgrim, может скинте архив мне на e-mail, я его попробую от своего имени прилепить?
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.


Вот архив с ANT.
Внимание!
Для распаковки нужно
1. Скачать все, сохраняя с такими же именами.
2. Распаковать архив Open.zip в папку со скачанными архивами.
3. Выполнить файл Open.bat
4. Распаковать SFX куда нужно.

ViNT 19.06.2008 00:36

Ответ: Canterbury Pascal for J2ME
 
Вложений: 1
Странно, идет какая-то ошибка:

Piligrim 19.06.2008 01:04

Ответ: Canterbury Pascal for J2ME
 
Вложений: 1
странно, такая же беда еще у одного человека. что показывает
java -version
у меня 1.6.0_03
результаты компиляции

ViNT 19.06.2008 01:08

Ответ: Canterbury Pascal for J2ME
 
Версия 1.4.2_04, может JVM старая?

Piligrim 19.06.2008 02:04

Ответ: Canterbury Pascal for J2ME
 
не знаю, у меня везде эта стоит, если найду машину с похожей проверю обязательно

ViNT 19.06.2008 02:11

Ответ: Canterbury Pascal for J2ME
 
Интересно, сколько новая JRE весит?
Искал на сайте SUN и на Motodev, что-то не нашел.

Sun Java JRE 6 это то что нужно, или нужно что-то другое?

Piligrim 19.06.2008 10:12

Ответ: Canterbury Pascal for J2ME
 
Да, это она и есть. Если правильно помню, примерно 18Мб. Я просто получил ее с диском NetBeans 6.0. У меня и дома и на работе все компилируется. Возможно сам паскаль скомпилирован с ее помощью.

ViNT 19.06.2008 11:29

Ответ: Canterbury Pascal for J2ME
 
Да, виновата была JRE, поставил новую - все заработало.
Весит порядка 15 мб, при сетевой установке - около 7 мб.

P.S. Надо бы это дело в отдельный подраздел вынести, пусть даже в ветке по MP.

ViNT 20.06.2008 00:22

Ответ: Canterbury Pascal for J2ME
 
Небольшой вопрос - к проектам можно как-нибудь подключать библиотеки на java?

Piligrim 20.06.2008 00:34

Ответ: Canterbury Pascal for J2ME
 
какие библиотеки? доступна вся ява, все классы напрямую
свойство MIDP_LIB в build.xml подключает любые библиотеки для компиляции, а потом просто
Код:

uses
    javax_microedition_media_Player;
var
    pl : Player;

и используем в программе плеер.

ЗЫ: при компиляции все еще возможны проблемы, если в библиотеке используются нативные методы, тогда пишем сюда и я их просто исправлю на заглушки.

ViNT 20.06.2008 00:39

Ответ: Canterbury Pascal for J2ME
 
Я немного другое имел ввиду.
Можно ли просто написать класс на java и прилинковать его к проекту(как в MP)?

А вообще, есть где-нибудь дока по этому паскалю?

Вот наткнулся на проблему.
Нужно перевести числовое значение в строковое.
В Java вроде так:
Код:

s = new String(i);
а как сделать здесь - не понимаю.

Piligrim 20.06.2008 02:09

Ответ: Canterbury Pascal for J2ME
 
нет, в яве
s := String.parseInt(12345);
класс можно прилинковать, чтобы к нему обатиться его надо положить по любому пути указанному в CLASSPATH
или имеется в виду добавление его как библиотеки и в jar?

дока лежит в папке mhc\compiler\doc :)

ViNT 20.06.2008 02:16

Ответ: Canterbury Pascal for J2ME
 
Цитата:

Сообщение от pilgrim (Сообщение 81237)
нет, в яве
s := String.parseInt(12345);

Я этот кусок кода взял из откомпиленного класса MP, так работает функция IntegerToString.
Если писать s := String.parseInt(12345); ,все равно пишет Syntax Error.
--------------------------------------------
Оказывается, есть процедура Str :).

Piligrim 20.06.2008 11:06

Ответ: Canterbury Pascal for J2ME
 
s := java_lang_String.String.valueOf(mode);
она то есть, один ньюанс: это встроенная функция паскаля, а не явы, тогда нам нужно линковать к готовому проекту модуль SYSTEM в котором живут все стандартные процедуры и функции.
Стандартный тип паскаля STRING - это StringBuffer в яве.
на мой взгляд лучше делать вот так:
Код:

type
    JString = java_lang_String.String;
var
    s : JString;
begin
    s := JString.valueOf(iMode);
end.

так мы не породим никакого лишнего кода и это красиво и быстро пойдет на телефоне

PS: похоже еще есть вопросы с русским языком, вернее с его кодировкой

ViNT 20.06.2008 13:03

Ответ: Canterbury Pascal for J2ME
 
Все равно не работает.
Про ValueOf пишет, что такого метода нет, пробовал делать то же самое, но с методом ParseInt - тоже ошибка.
Кстати, разве модуль SYSTEM так не линкуется?
Да, с кодировкой проблемы.
Пробовал сохранять файл в разных кодировках - про Unicode и UTF-8 пишет, что есть недопустимые символы, а с Win просто квадраты вместо символов. Похоже, нужно где-то ключи компилятора менять.

Piligrim 20.06.2008 15:28

Ответ: Canterbury Pascal for J2ME
 
Вложений: 1
с кодировкой я попытаюсь разобраться, хотя в теории можно строки в ресурсных файлах хранить.
SYSTEM действительно не линкуется, а нужно? Его нужно подредактировать под реалии мобильной явы.
ниже приведенный код компилируется и работает на моем ROKR E2, хотя proguard4.0.1 на него ругается :)

ViNT 20.06.2008 15:34

Ответ: Canterbury Pascal for J2ME
 
Вложений: 1
У меня похоже что-то не так настроено, всеравно идет та же ошибка:
Да, это всетаки proguard ругается, так мидлет запускается и работает.
Кстати, как правильно создавать плеер для файла из архива?

Piligrim 20.06.2008 21:54

Ответ: Canterbury Pascal for J2ME
 
не знаю почему, но вызов valueOf(int) progurad воспринимает как double, в моем примере я отключил обфускацию, т.е. proguard. видимо несовершенен.
но на мой взгляд, у этой платформы хорошие перспективы, несмотря на то, что я получил приглашение участвовать в развитии МР.

Piligrim 23.06.2008 10:18

Ответ: Canterbury Pascal for J2ME
 
В процессе тестирования выявились следующие сложности:
1. Не корректная кодовая таблица русского в готовой программе
-копаю коды компилятора на этот счет
2. Системный модуль SYSTEM содержит много мусора, не нужного в мобильной версии. И его нужно линковать к готовой программе для использования стандартных функций паскаля.
-адаптирую и чищу его.
--Нужно ли оставлять работу с ФС? Сделать JSR75?

ViNT 23.06.2008 15:40

Ответ: Canterbury Pascal for J2ME
 
По идее ФС нужна, я например до сих пор не понял, как создать подключение к ФС.
Допустим, в java я плеер делел так:
Код:

FileConnection conn = (FileConnection)Connector.open("file://"+
          FileName);
      InputStream is = conn.openInputStream();

А здесь что-то не могу реализовать выделенную конструкцию - ни прямое приведение типов ни оператор AS использовать не получается.

Piligrim 24.06.2008 02:15

Ответ: Canterbury Pascal for J2ME
 
да, я тоже не могу понять их диаграмму, для приведения типа.
Код:

                INLINE(               
                fc = (javax.microedition.io.file.FileConnection)javax.microedition.io.Connector.open("file:///root1/readme.txt");
                )

работает, хотя это уже не чистый паскаль.

ViNT 24.06.2008 02:53

Ответ: Canterbury Pascal for J2ME
 
Цитата:

Сообщение от pilgrim (Сообщение 81349)
Код:

                INLINE(               
                fc = (javax.microedition.io.file.FileConnection)javax.microedition.io.Connector.open("file:///root1/readme.txt");
                )


Вот это уже поинтереснее.
Хорошо, что можно встявлять блоки на java.

ViNT 02.07.2008 00:50

Ответ: Canterbury Pascal for J2ME
 
А можно здесь как-нибудь импортировать не отдельные классы, а целые пакеты, например как в java improt javax.microedition.io.file.* вместо import javax.microedition.io.file.FileConnection?

Piligrim 05.07.2008 23:33

Ответ: Canterbury Pascal for J2ME
 
Похоже что нет. Он по этим импортам сканирует классы, а так ему весь пакет придется сканить

satan 27.07.2008 05:58

Re: Canterbury Pascal for J2ME
 
Могу подкинуть для таклго делу IDE а ля BDS 2006 делал для собственного компилятора (исходники)


ЗЫ...

Ща подумал, можно сразу сделать входной язык любой (типа поддержку) даже PHP а выходной в байт код на J2ME токма натить примеры иль SDK какой нить по програмингу на ASM под J2ME...

Ну или человека который компилил на Asm для мидлетов...

Извиняюсь за оффтоп... Нашол Jasmin типа Asm для явы...
В принципе можно сделать свой MP с любым синтаксисом!!!

Можно удалить пожалста два следучих поста... Не вкурю как ето сделать!

Забыл добавить VISUAL MIDLET PASCAL

satan 30.07.2008 02:36

Re: Canterbury Pascal for J2ME
 
А можно у сайта сделать язык по умолчанию ru а не en а то не удобно переключаца с кодировки на кодировку???

Piligrim 30.07.2008 11:14

Ответ: Canterbury Pascal for J2ME
 
IDE, дело хорошее. Исходники на С++ или на Delphi?

satan 30.07.2008 12:49

Re: Canterbury Pascal for J2ME
 
Delphi!
Дак более того, она уже готова под любой компилер, тоесть встроеный дизайнер форм и шаблонный редактор, настраиваемая подсветка синтаксиса и кодефолдинг , можно прикрутить редактор ресурсов и т.д...

У меня вот другой вопрос, компилер Java я прикрутил и пробывал скомпилить классы (без машины) и вот чо выяснил...
Короче СР запускаеца через VM Java ,тоисть сперва запускаица мидлет Pas3.zip и он уже коцает все остальное в байт код, я посмотрел SYSTEM.PAS - типичный интерпретатор, причом ужо готовый, его немного подработать напильником под Delphi (Turbo она Free) и получим свой независимый компилер сразу в Java MIDP а виртуальную машину можно выдернуть из EWE благо исходники есть для теста Апплетов ну и MIDpX (пробывал связаца с аффтором, чот молчит) для запуска мидлетов.

Хотя если щас с EWE разберусь и он не нужен будет!!!

ЗЫ...

А вообче может написать небольшой тутор по созданию компиляторов-интерпретаторов на Delphi???

Phantom 02.08.2008 21:21

Ответ: Canterbury Pascal for J2ME
 
Цитата:

Ща подумал, можно сразу сделать входной язык любой (типа поддержку) даже PHP а выходной в байт код на J2ME
Это моя мечта! Паскалевский синтаксис очень не удобный (для меня по крайней мере), а на php я уже довольно таки давно пишу и его синтаксис для меня - как родной. Конечно, в java синтаксис похожий, но в java я много чего не понимаю. Вот бы спихнуть всё непонятное на плечи программы, а самому заниматься непосредственно кодом. =)

Kurdt 03.08.2008 22:28

Re: Canterbury Pascal for J2ME
 
супер! мне тоже удалось скомпилировать. буду развивать!
столкнулся с одной проблемой чтото немогу подружиться с руским языком пробовал утф 8, тогда этот паскаль не компилирует проэкт

---
извиняюсь пока компилил в ветке появились новые ответы... )

Kurdt 05.08.2008 10:16

Re: Canterbury Pascal for J2ME
 
Еще одна прблема с компилятором. Невозможно использовать глобальные переменные-масивы в процедурах.. (((
и ошибку вычислить сложно без ID компилятор просто выкидывает код, который идет ниже ошибки в процедуре, и собирает пиложение.

pamalofeev 23.11.2008 16:45

Ответ: Canterbury Pascal for J2ME
 
ant из поста 8 не работает. Говорит, что папка ant_home не правильная или не задана, хотя в переменых путь настроен. Пришлось качать полную версию с офф сайта, с ней все заработало сразу.

Trazzy 01.12.2008 06:35

Ответ: Canterbury Pascal for J2ME
 
Блин, у меня чет не пошло:(

ViNT 01.12.2008 14:32

Ответ: Canterbury Pascal for J2ME
 
Смотря какая ошибка, возможно, JRE старая.

minibt 18.02.2009 19:15

Re: Canterbury Pascal for J2ME
 
Вложений: 1
Попробывал, интересно:)
А вот с русским не дружит...
Написал патчик для классов чтоб русский шел, мож кому пригодиться
Вложение 5424
Синтаксис таков "corrut8.exe name.class".
Примечание.
Компилятору Pas файлы подовать ANSI в win1251.
Оптимально использовать после обфуксации до преверфикации.
Обфускаторы тоже русский могут искаверкать...

Например кинуть в bin и добавить в build.xml
...
<!-- Internal target: preverify -->
<target name="preverify" depends="obfuscate,skip-obfuscate">
<exec executable="${ME_BIN}/corrut8">
<arg value="${build}/obfuscate/classes/${ant.project.name}_main.class"/>
</exec>

...

demon112 20.05.2009 16:01

Ответ: Canterbury Pascal for J2ME
 
а ЧТО ЭТО ВООБЩЕ ТАКОЕ? И ЗАЧЕМ ОНО НУЖНО?

ViNT 21.05.2009 09:36

Ответ: Canterbury Pascal for J2ME
 
Цитата:

Сообщение от demon112 (Сообщение 105393)
а ЧТО ЭТО ВООБЩЕ ТАКОЕ? И ЗАЧЕМ ОНО НУЖНО?

Это компилятор кода Pascal(даже немного ближе к Delphi) в байткод j2me. Основное отличие от MP в том, что доступно практически все, но структура приложения такая, как в java, а не как в паскале.

demon112 21.05.2009 13:25

Ответ: Canterbury Pascal for J2ME
 
а почему тогда это лежит в теме мидлет паскаль?

PacMan 07.09.2009 22:46

Ответ: Canterbury Pascal for J2ME
 
Улыбнуло!=)
Мне тоже удалось скомпилировать программу, очень понравилось!))


Часовой пояс GMT +4, время: 10:27.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot