forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=48)
-   -   Пишем либы для MidletPascal на JAVA (http://forum.boolean.name/showthread.php?t=440)

pax 18.12.2005 17:18

Прежде всего нам понадобятся:

1. JAVA SDK
2. JAVA WTK
3. jGRASP
4. ну и MidletPascal для тестирования либ.
Примечание: JAVA WTK должен быть установлен после JAVA SDK

Далее я опишу последовательность создания либы, описанной в справочной системе MidletPascal, но буду использовать для этого Java IDE jGRASP.

Начнем с настроек jGRASP.

1. В Меню Settings->Compiler Settings выбираем пункт File.

2. В закладке Environment выбираем j2me - WTK1 generic и жмем кнопку Use.

3. Создаем проект j2me (Project->New->New J2ME Project), указываем путь и название проекта, убираем галочку с пункта Import Files Now.

4. Добавляем файл Java в проект, он будет содержать модуль, который мы потом подключим к MidletPascal. Для этого в меню Project выбираем пункт Add Files, заходим в папку \src\ нашего проекта, пишем название файла Lib_mylib.java и жмем кнопку Add. Слева в окне Open Projects под названием нашего проекта появится пункт Lib_mylib.java src\ . Щелкните по нему два раза и нажмите кнопку Create, для создания этого файла.

5. Теперь самая интересная чать... кодинг :). В открывшееся окно вводим следующий код:

Код:

// Класс модуля НЕ ДОЛЖЕН содержаться в каком-либо архиве!!!

// Имя класса должно начинаться с префикса Lib_ и все символы *
// идущие после L должны иметь нижний регистр
public class Lib_mylib
{
 *// Все функции должны быть статическими, и все символы
 *// в функциях должны иметь нижний регистр
 *public static int square(int val)
 *{
 * *return val * val;
 *}

 *public static int count_numbers(String text)
 *{
 * *int count = 0;
 * *int i;
 * *for(i = 0; i < text.length(); i++)
 * *{
 * * *if ((text.charAt(i) >= '0') && (text.charAt(i) <= '9'))
 * * * *count ++;
 * *}
 * *return count;
 *}
}

6. Настало время компиляции. В меню Build последовательно выбираем пункты Compile и Preverify.

Вот и все. Нащ модуль готов.

Теперь настало время его протестировать.

Для начала скопируем наш модуть из папки \classes\ нашего проекта в папку \Program Files\MIDletPascal\Libs\. Далее в MIDletPascal создаем новый проект и вводим туда следующий код:

Код:

program NewProject;
uses MyLib;

var idx : integer;
begin
 *ShowForm;
 *
 *idx := FormAddString('5 squared is: ' + MyLib.square(5));
 *
 *idx := FormAddString('There are ' + *
 * * * * * * * * * * * MyLib.count_numbers('a0b2c') + *
 * * * * * * * * * * * ' numbers in ''a0b2c'' ');
 *Delay(5000);
end.

Жмем кнопку Build and run и наслаждаемся результатом :)

Guest 24.12.2005 10:13

Ага из хелпа пример работает. А больше 2к кода перестает видеть функции.

pax 24.12.2005 22:45

Цитата:

Originally posted by Guest@Dec 24 2005, 10:13 AM
Ага из хелпа пример работает. А больше 2к кода перестает видеть функции.
Ну можно разбить либу на несколько :) , если конечно одна функция не больше 2-х кб ;)

pilgrim 25.12.2005 12:35

Не не прикольно. Хочу разобраться где тут собака порылась. На java то все работает.
Ведь переношу функцию выше по исходному тексту и все начинает работать.

dzaniss 02.08.2006 02:08

Re: Пишем либы для MidletPascal на JAVA
 
Я столкнулся с проблемой,как вытянуть имена записей RMS!?Вот и написал сам на яве и добавил к Lib_rsenum!Точку применил для скрытых записей,например имя .CONFIG не добавится в строку!

public static String list(int idx) {
StringBuffer s = new StringBuffer();
try{

String as[] = RecordStore.listRecordStores();
if(as != null)
{
for(int l = 0; l < as.length; l++)
if(as[l].charAt(0) != '.')
s.append(as[l]).append('|');

}

}catch(Exception e) {return "";}
return s.toString();
}


Только вот вопрос,не выходит таким образом s:= list(); Поэтому так и зделал,любую цифру вставлять s:= list(1); И спасибо piligrimu за его работу,я на ура применил его библиотеку для файлменеджера,но с байтами там нето что-то!

EQ 31.01.2007 15:08

Re: Пишем либы для MidletPascal на JAVA
 
Ё-моё, у вас всё хорошо идёт, а у меня не компилится ни так, как в хелпе написано, ни так, как здесь сказано. У меня WTK25, как мне быть? Если так нужен WTK1, то где его взять? На сайте видел только 2.2...

Fire_Phoenix 17.12.2007 16:12

Re: Пишем либы для MidletPascal на JAVA
 
Я заметил, что после компиляции приложения, в jar архиве появляется FW.class, что это такое и откуда берется? Если заглянуть в справку, то там этот же файл использовался для написания своей библиотечки....

ViNT 17.12.2007 18:36

Re: Пишем либы для MidletPascal на JAVA
 
Это главный класс приложения, он генерируется самим MP.
В основном взаимодействие библиотек с приложением происходит именно через классы FW и M.

Fire_Phoenix 17.12.2007 21:34

Re: Пишем либы для MidletPascal на JAVA
 
То есть при написании библиотек нужно/можно ссылаться на эти классы?

ViNT 17.12.2007 23:04

Re: Пишем либы для MidletPascal на JAVA
 
Да, если например нужно работать с дисплеем, то это можно делать только через эти классы. То же самое относится и к плееру(класс P, переменная p).

odd 18.12.2007 08:31

Re: Пишем либы для MidletPascal на JAVA
 
А как компилить либы с использованием MP классов? Скажем, я хочу обратитьься к M.G. компилятор ругается на отсутствие этих классов, может надо прилагать M.java к файлу библиотеки? Опишите plz такую компиляцию, а то я чисто java классы могу использовать, а к классам MP нет доступа.

Piligrim 18.12.2007 13:30

Re: Пишем либы для MidletPascal на JAVA
 
при компиляции просто кладешь в папку со своей библиотекой FW.java и он компилируется вместе с ней, ну а потом его просто игнорируешь.
можно еще другим способом: указать в classpath папку с FW.class

Phantom 07.07.2008 06:53

Ответ: Пишем либы для MidletPascal на JAVA
 
Здравствуйте, я джаву не знаю толком, только в общих чертах. Не могли бы вы написать пример либы, как вывести текст на канвас. Я понимаю, что в мидлет паскале это просто через drawText() делается =) Но мне просто посмотреть охота, как в либе это реализовать, понять нужно. Ну вот, например, нужно сделать либу с одной функцией, которая будет работать аналогично drawText(), но называться, скажем, printText(). Напишите, если не сложно, а то я уже как только не пробовал.

odd 07.07.2008 08:23

Ответ: Пишем либы для MidletPascal на JAVA
 
Цитата:

Сообщение от Phantom_wc (Сообщение 81837)
Здравствуйте, я джаву не знаю толком, только в общих чертах. Не могли бы вы написать пример либы, как вывести текст на канвас. Я понимаю, что в мидлет паскале это просто через drawText() делается =) Но мне просто посмотреть охота, как в либе это реализовать, понять нужно. Ну вот, например, нужно сделать либу с одной функцией, которая будет работать аналогично drawText(), но называться, скажем, printText(). Напишите, если не сложно, а то я уже как только не пробовал.

Ну типа так:

Код:

import javax.microedition.lcdui.Graphics;

class Lib_test
{
    public static void printtext(String s, int x, int y)
    {
        M.G.drawString(s, x, y, 20);
    }
}


Phantom 07.07.2008 14:37

Ответ: Пишем либы для MidletPascal на JAVA
 
Спасибо =) Как я понимаю, нужно при компиляции M.class в папку положить, чтобы компилятор не ругался, да? Вот только, как вы понимаете, где писать M.G, а где, например, FW.fw?.. Я не знаю, как это называется, у меня с терминологией проблемы =) Грубо говоря, где вы вычитали через какие классы к каким кускам Джавы обращаться нужно? Я к Graphics только не пробовал, но всё ошибка была =) По такому-то ведь в джаве можно так, если не ошибаюсь:
javax.microedition.lcdui.Graphics.drawString(s, x, y, 20);
Почему же в мидлет паскале нельзя так? Почему всё так запутано?
- - -
Сорри за такой тупой пост, просто я до этого толком только на php писал, а на нём даже обезьяну можно научить кодить :D


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

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