|
FAQ Часто задаваемые вопросы |
18.12.2005, 17:18
|
#1
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Прежде всего нам понадобятся:
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 и наслаждаемся результатом
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
24.12.2005, 10:13
|
#2
|
|
Ага из хелпа пример работает. А больше 2к кода перестает видеть функции.
|
|
|
24.12.2005, 22:45
|
#3
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Originally posted by Guest@Dec 24 2005, 10:13 AM
Ага из хелпа пример работает. А больше 2к кода перестает видеть функции.
|
Ну можно разбить либу на несколько , если конечно одна функция не больше 2-х кб
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
25.12.2005, 12:35
|
#4
|
|
Не не прикольно. Хочу разобраться где тут собака порылась. На java то все работает.
Ведь переношу функцию выше по исходному тексту и все начинает работать.
|
|
|
02.08.2006, 02:08
|
#5
|
AnyKey`щик
Регистрация: 02.08.2006
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
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 за его работу,я на ура применил его библиотеку для файлменеджера,но с байтами там нето что-то!
|
(Offline)
|
|
31.01.2007, 15:08
|
#6
|
AnyKey`щик
Регистрация: 29.01.2007
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
Ё-моё, у вас всё хорошо идёт, а у меня не компилится ни так, как в хелпе написано, ни так, как здесь сказано. У меня WTK25, как мне быть? Если так нужен WTK1, то где его взять? На сайте видел только 2.2...
|
(Offline)
|
|
17.12.2007, 16:12
|
#7
|
Оператор ЭВМ
Регистрация: 15.12.2007
Сообщений: 34
Написано 2 полезных сообщений (для 2 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
Я заметил, что после компиляции приложения, в jar архиве появляется FW.class, что это такое и откуда берется? Если заглянуть в справку, то там этот же файл использовался для написания своей библиотечки....
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.12.2007, 18:36
|
#8
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
Это главный класс приложения, он генерируется самим MP.
В основном взаимодействие библиотек с приложением происходит именно через классы FW и M.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.12.2007, 21:34
|
#9
|
Оператор ЭВМ
Регистрация: 15.12.2007
Сообщений: 34
Написано 2 полезных сообщений (для 2 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
То есть при написании библиотек нужно/можно ссылаться на эти классы?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.12.2007, 23:04
|
#10
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
Да, если например нужно работать с дисплеем, то это можно делать только через эти классы. То же самое относится и к плееру(класс P, переменная p).
|
(Offline)
|
|
18.12.2007, 08:31
|
#11
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
А как компилить либы с использованием MP классов? Скажем, я хочу обратитьься к M.G. компилятор ругается на отсутствие этих классов, может надо прилагать M.java к файлу библиотеки? Опишите plz такую компиляцию, а то я чисто java классы могу использовать, а к классам MP нет доступа.
|
(Offline)
|
|
18.12.2007, 13:30
|
#12
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Re: Пишем либы для MidletPascal на JAVA
при компиляции просто кладешь в папку со своей библиотекой FW.java и он компилируется вместе с ней, ну а потом его просто игнорируешь.
можно еще другим способом: указать в classpath папку с FW.class
|
(Offline)
|
|
07.07.2008, 06:53
|
#13
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Здравствуйте, я джаву не знаю толком, только в общих чертах. Не могли бы вы написать пример либы, как вывести текст на канвас. Я понимаю, что в мидлет паскале это просто через drawText() делается =) Но мне просто посмотреть охота, как в либе это реализовать, понять нужно. Ну вот, например, нужно сделать либу с одной функцией, которая будет работать аналогично drawText(), но называться, скажем, printText(). Напишите, если не сложно, а то я уже как только не пробовал.
|
(Offline)
|
|
07.07.2008, 08:23
|
#14
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Сообщение от Phantom_wc
Здравствуйте, я джаву не знаю толком, только в общих чертах. Не могли бы вы написать пример либы, как вывести текст на канвас. Я понимаю, что в мидлет паскале это просто через 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);
}
}
Последний раз редактировалось odd, 07.07.2008 в 08:51.
|
(Offline)
|
|
07.07.2008, 14:37
|
#15
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Спасибо =) Как я понимаю, нужно при компиляции M.class в папку положить, чтобы компилятор не ругался, да? Вот только, как вы понимаете, где писать M.G, а где, например, FW.fw?.. Я не знаю, как это называется, у меня с терминологией проблемы =) Грубо говоря, где вы вычитали через какие классы к каким кускам Джавы обращаться нужно? Я к Graphics только не пробовал, но всё ошибка была =) По такому-то ведь в джаве можно так, если не ошибаюсь:
javax.microedition.lcdui.Graphics.drawString(s, x, y, 20);
Почему же в мидлет паскале нельзя так? Почему всё так запутано?
- - -
Сорри за такой тупой пост, просто я до этого толком только на php писал, а на нём даже обезьяну можно научить кодить :D
Последний раз редактировалось Phantom, 07.07.2008 в 14:49.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:43.
|