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)

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?


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

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