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)

Phantom 17.07.2008 01:49

Ответ: Пишем либы для MidletPascal на JAVA
 
Я читал немного про вектор, и в классе мультистрочном он используется. Но я больно-то не вдавался в его работу пока.

Phantom 17.07.2008 23:09

Ответ: Пишем либы для MidletPascal на JAVA
 
А аналог delay() какой в Джаве? Читал что-то про таймер, но больно он заумный какой-то...

ViNT 18.07.2008 01:59

Ответ: Пишем либы для MidletPascal на JAVA
 
Аналога delay как такового нет, MP запускает код в потоке (Thread), а Delay - это вызов Thread.sleep.

Phantom 18.07.2008 14:48

Ответ: Пишем либы для MidletPascal на JAVA
 
Поставил я НетБеанс... И как там j2me проект создать? О_о что-то я не пойму...

odd 19.07.2008 08:13

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

Сообщение от Phantom_wc (Сообщение 82520)
Поставил я НетБеанс... И как там j2me проект создать? О_о что-то я не пойму...

Выбираешь File --> New Project.
В визарде проектов выбираешь Mobility --> MIDP Application (если хочешь написать программку) или Mobile Class Library (если библиотеку функций).
Набираешь имя проекта и всё.
Теперь чтобы добавить Java файл в проект нажимаешь в левом окне Project по своему проекту правой кнопкой мыши и выбираешь New --> Java Class. Пишешь имя класса, потом компилишь. Всё просто.

Может такое быть, что у тебя модуль плагинов Mobility не установлен. Зайди в Tools --> Plugins и убедись, что данный модуль есть и он подключен. Если нету - загрузи его.

Phantom 19.07.2008 19:00

Ответ: Пишем либы для MidletPascal на JAVA
 
Так и есть: нет у меня этого модуля. Зашёл в плагины, там есть список всякой всячины, можно напротив каждой галочку поставить, а внизу кнопка Инсталл... Так вот, там куча всяких мобилитей. Какую именно инсталлить? Пока ставлю просто "мобилити", посмотрим, может прокатит =)
- - -
Чуть позже:
Поставил, появилось мобилити в создании проекта. Нажимаю next и мне выдаёт вот это: http://wapcode.ru/O_o.png (9 Kb)
Это что? У меня всякие jdk, jre, wtk - всё установлено. Чё ему ещё-то нужно?
- - -
Гораздо позже:
Ыы... Там просто нажал кнопачку, там указал папку с WTK и всё работает вроде... Пойду Хэллоу ворлд писать =)
- - -
Блин...
Не работает мой Хэллоу ворлд... Ну это ладно, разберусь. Скажите мне, какую структуру программы лучше делать? В главном классе лучше только объявить
startApp()
pauseApp()
destroyApp()
, а всё остальное писать в отдельном классе/классах. Так удобнее или нет? Как вообще делают?

ViNT 19.07.2008 22:14

Ответ: Пишем либы для MidletPascal на JAVA
 
В любом случае, Canvas, формы и все прочее нужно делать отдельными классами.

Phantom 19.07.2008 22:33

Ответ: Пишем либы для MidletPascal на JAVA
 
:blink: :blink: :blink: Чё, реально что ли? Блин, почему всё так сложно??? Я вообще не могу понять структуру джава программ...

ViNT 19.07.2008 22:47

Ответ: Пишем либы для MidletPascal на JAVA
 
Поковыряйся декомпилятором в бинарниках MP, может что-то прояснится(я java так изучать начинал =) ). А вообще, советую купить хороший самоучитель.

Phantom 19.07.2008 23:19

Ответ: Пишем либы для MidletPascal на JAVA
 
У меня есть книжки Пирумяна и Горнакова. В электронном виде. Пирумяна я вообще не понимаю, а Горнакова ооочень немного =) А английский я почти не знаю. Если читать описание функций - это ещё ладно, как-нибудь соображу, но если учиться по английским учебникам - это для меня нереально.
- - -
А классы мидлетпаскалевские всегда байт в байт одинаковые? Кроме M.class. Ну, например, FW, P, S...

ViNT 19.07.2008 23:40

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

Сообщение от Phantom_wc (Сообщение 82632)
А классы мидлетпаскалевские всегда байт в байт одинаковые? Кроме M.class. Ну, например, FW, P, S...

На счет FW сказать не могу, а остальные по-моему всегда одинаковые.

Phantom 19.07.2008 23:59

Ответ: Пишем либы для MidletPascal на JAVA
 
А я как раз заметил, что FW всегда одинаковый... Во всех проектах =) Вроде...
- - -
PHP код:

public void destroyApp(boolean flag){
   
null;
   
M.null;
   
M.null;
   
CD null;
   
null;
   
TB null;
   
null;
   
null;
   
fw null;
   
LC null;
   
notifyDestroyed();
 } 

Скажите мне, нафига он это делает? Ведь дестрой происходит при выходе из приложения вроде как. А не пофиг ли уже джава машине, если уже прогу закрывать надо? Она сама потом и оперативу почистит и всё в порядок приведёт...
- - -
PHP код:

public class extends Canvas
    
implements Runnable

Что обозначает implements Runnable? Если написано extends, то это, на сколько я знаю, наследование, а implements - это что?

Piligrim 20.07.2008 11:51

Ответ: Пишем либы для MidletPascal на JAVA
 
implements появляется если класс включает в себя какой-то interface
С их помощью удобно делать callback и т.д.
ЗЫ: Давайте уж такие серьезные вопросы по яве задавать в соответствующей теме. Уж это к написанию библиотек имеет косвенное значение.

Phantom 26.07.2008 19:49

Ответ: Пишем либы для MidletPascal на JAVA
 
Тут писали, что размер дисплея получается так:
PHP код:

FW.CD.getWidth;  
FW.CD.getHeight

Не работает:
Код:

cannot find symbol
symbol  : variable getHeight
location: class javax.microedition.lcdui.Displayable
h=FW.CD.getHeight-y*2;
      ^

- - -
Добавил позже:
Долго же я сам до истины допирал =) Оказывается, надо писать так:
PHP код:

FW.CD.getWidth();   
FW.CD.getHeight(); 

Со скобочками.
- - -
What eto da...
Взгляните сюда. Написал либу. Класс содержит два метода. Первый - init - Высчитывает по специальной формуле размер окошка и создаёт два полупрозрачных чёрных объекта типа Image (рисунка, грубо говоря). Второй - frame - Рисует эти полупрозрачные рисунки на канвасе в четырёх местах таким образом, что получается как бы полупрозрачная рамка.
PHP код:

import javax.microedition.lcdui.*;

public class 
Lib_ramka{
// ***********************************
 
public static int x,y,w,h;
 public static 
Image a1,a2,bg;
 public static 
Graphics g=M.G;
 public static 
Displayable d=FW.CD;
// ***********************************
 
public static void init(){
   
x=(d.getWidth()*6)/100;
   
w=d.getWidth()-x*2;
   
y=(d.getHeight()-(w*86)/100)/2;
   if(
y<x)y=x;
   
h=d.getHeight()-y*2;
   
int p[]=null;
   
p=new int[x*d.getHeight()];
   for(
int i=0;i<p.length;i++)
   
p[i]=0xbb000000;
   
a1=Image.createRGBImage(p,x,d.getHeight(),true);
   
p=new int[w*y];
   for(
int i=0;i<p.length;i++)
   
p[i]=0xbb000000;
   
a2=Image.createRGBImage(p,w,y,true);
 }
// ***********************************
 
public static void frame(){
   
g.drawImage(a1,0,0,g.LEFT|g.TOP);
   
g.drawImage(a1,d.getWidth(),0,g.RIGHT|g.TOP);
   
g.drawImage(a2,x,0,g.LEFT|g.TOP);
   
g.drawImage(a2,x,d.getHeight(),g.LEFT|g.BOTTOM);
 }
// ***********************************


В эмуляторе работает. На моём сименсе С75 - нет. Кто подскажет, в чём дело? Ничего не зависает, просто рамочка не рисуется, мидлет дальше без неё выполняется...

Piligrim 27.07.2008 11:39

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

public static Graphics g=M.G;
public static Displayable d=FW.CD;
я бы так не делал. static отрабатывает при запуске программы, когда эти переменные еще не имеют значений. Перенеси в init

Phantom 27.07.2008 15:56

Ответ: Пишем либы для MidletPascal на JAVA
 
Переделал. Ничего не изменилось. В эмуляторе работает, в телефоне нет. Сделал так:
Запускается мидлет, проверяется память, вызывается init, проверяется память, загружается и рисуется картинка, проверяется память, вызывается frame, проверяется память. Так вот.
1) при запуске задействовано 17% памяти
2) после вызова init - 19%
3) после рисования картинки - 23%
4) после вызова frame - 26%
- - -
Проверил на Nokia N72:
Работает как надо... С полупрозрачностью раньше уже играл, на сименсе она работает, но в данном случае не хочет... :'(

ViNT 28.07.2008 02:56

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

WM.l.getWidth();
H=M.l.getHeight(); 

должно сработать.

Phantom 28.07.2008 03:37

Ответ: Пишем либы для MidletPascal на JAVA
 
Так эту проблему я решил, выше написано, в том же посте =) Но с сименсом ничего так и не могу поделать, не выводит он на экран рамку =(

KASPER 19.10.2008 19:18

Ответ: Пишем либы для MidletPascal на JAVA
 
А где скачать прогу JGRASP?

temned 09.01.2009 20:13

Ответ: Пишем либы для MidletPascal на JAVA
 
http://spider.eng.auburn.edu/user-cg...ad_jgrasp.html

temned 24.01.2009 20:15

Ответ: Пишем либы для MidletPascal на JAVA
 
Парни проблема: Я компилирую либы с помощью JCreator. Пытаюсь компильнуть первый пример odda-там где текст. Куда надо кинуть m.class? И какой? Это тот который мона выдернуть из любого мидлета MP? Не компилируется-2errors(package javax.microedition.lcdui does not exist; package M does not exist)

temned 24.01.2009 22:05

Ответ: Пишем либы для MidletPascal на JAVA
 
У мя установлено
J2ME Wireless Toolkit 2.2
jdk-1_5_0_16
jgrasp
JCreator 4.50 Pro
Короче, шо надо добавлять(я не знаю-M.class иль F.java иль ешо што-нить), штоб компилировалось
компилировались проекты с использованием MP классов?

Piligrim 25.01.2009 00:00

Ответ: Пишем либы для MidletPascal на JAVA
 
Этого более чем достаточно.
Я пользуюсь вот таким bat файлом
Код:

@SET JDK=C:\Program Files\Java\jdk1.6.0_11
@SET WTK=C:\Program Files\NetBeans 6.5\mobility8\WTK2.5.2
@rem @SET SDK=C:\Borland\SDK_5.2.1\EmulatorA.1\lib
@rem del tmpclasses\*.class
@"%JDK%\bin\javac" -bootclasspath "%WTK%\lib\midpapi20.jar";"%WTK%\lib\cldcapi11.jar";"%WTK%\lib\jsr75.jar";"%WTK%\lib\mmapi.jar";"%WTK%\lib\jsr082.jar";"D:\Java\lib\tinylinegzip.zip";tmpclasses -classpath tmpclasses -source 1.3 -target 1.3 -d tmpclasses src\*.java
@"%WTK%\bin\preverify" -classpath "%WTK%\lib\midpapi20.jar";"%WTK%\lib\cldcapi11.jar";"%WTK%\lib\jsr75.jar";"%WTK%\lib\mmapi.jar";"%WTK%\lib\jsr082.jar";"D:\Java\lib\tinylinegzip.zip";tmpclasses -d D:\java\MIDletPascal\Libs D:\java\MIDletPascal\Libs\Lib\tmpclasses
pause

Пути естественно исправить на свои
Дерево папок у меня такое
MIDletPascal
-Libs
--Lib
---src
---tmpclasses
Соответственно, после компиляции библиотека автоматически попадает в папку Libs МР и ее можно тестировать.
Чтобы компилировать библиотеки работающие с основными классами, декомпилируем их и кладем в папку src

temned 25.01.2009 14:23

Ответ: Пишем либы для MidletPascal на JAVA
 
pilgrim, сорри за флуд. Просто я не понял. Я не понимаю в bat файлах. как создавать, где писать, што писать. Если мона еще раз поподробнее, или обьясни без БАТ файлов, типа куда шо-кинуть, например ерез jcreator, создается папка, в папке есть папвка src-где лежит мой java. Обьяните, я просто начинаю в этом деле.
Цитата:

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

Piligrim 25.01.2009 17:40

Ответ: Пишем либы для MidletPascal на JAVA
 
Вложений: 1
bat файлы - это простые текстовые файлы с командами. Создать можно любом текстовом редакторе. Выполняются простым двойным кликом в эксплорере или TotalCommander.
Во вложении, исходники FW и M классов. Просто кладем их в папку src и ваша библиотека при компиляции их увидит. Аналогично поступаем с любыми другими системными классами. Декомпилятор тоже есть во вложении.
При использовании jcreator поступаем аналогично. Исходники кладем в папку src. По идее нужно еще вызывать preverify после компиляции для проверки корректности классов. Как это сделать в jcreator не знаю, сам пользуюсь NetBeans.

temned 25.01.2009 19:53

Ответ: Пишем либы для MidletPascal на JAVA
 
pilgrim, пробовал и с bat файлом шо-нить сдлелать, и те исходники которые ты дал кинул-не компилируется. Вот Сяс ь у мя пишет такие ошибки: package javax.microedition.lcdui does not exist
cannot access javax.microedition.lcdui.Graphics
Может пример-гове***?
Вот которй я птаюсь скомпилировать
Код:

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);
    }
}

если мона дайте самый простой пример, мона с использованием классов MP

Piligrim 25.01.2009 22:07

Ответ: Пишем либы для MidletPascal на JAVA
 
В bat файле нужно пути исправить. Первые две строки. На те которые у тебя в системе, тогда будет находить системные классы

temned 25.01.2009 23:13

Ответ: Пишем либы для MidletPascal на JAVA
 
Я исправлял-получилось что-то типа
PHP код:

@SET JDK=C:\Program Files\Java\jdk1.5.0_16
@SET WTK=C:\WTK22
@rem @SET SDK=C:\Borland\SDK_5.2.1\EmulatorA.1\lib
@rem del tmpclasses\M.class
@
"%JDK%\bin\javac" -bootclasspath "%WTK%\lib\midpapi20.jar";"%WTK%\lib\cldcapi11.jar";"%WTK%\lib\jsr75.jar";"%WTK%\lib\mmapi.jar";"%WTK%\lib\jsr082.jar";"D:\Java\lib\tinylinegzip.zip";tmpclasses -classpath tmpclasses -source 1.3 -target 1.3 -d tmpclasses src\Lib_test.java
@"%WTK%\bin\preverify" -classpath "%WTK%\lib\midpapi20.jar";"%WTK%\lib\cldcapi11.jar";"%WTK%\lib\jsr75.jar";"%WTK%\lib\mmapi.jar";"%WTK%\lib\jsr082.jar";"D:\Java\lib\tinylinegzip.zip";tmpclasses -d C:\Program Files\MIDletPascalLibs C:\Program Files\MIDletPascal\Libs\Lib\tmpclasses
pause 

Ну может быть можно как-то без dat? Я же делаю все правильно, уидаю куда-надо, может пример плохой?

ViNT 25.01.2009 23:18

Ответ: Пишем либы для MidletPascal на JAVA
 
Если есть WTK, значит есть KToolBar. Там никаких bat'ов не надо - создаешь проект, папка проекта появляется в WTK\apps, закидываешь исходники в папку src и компилишь.

temned 25.01.2009 23:34

Ответ: Пишем либы для MidletPascal на JAVA
 
ЧЕРТ,. VInt ты гений!! Спасибо большое!!
Цитата:

А ларчик просто открывался..
И.А.Крылов
Я Люблю Тебя!!!:girl_in_love: :girl_in_love: :girl_in_love:

Tronix 26.08.2009 14:24

Ответ: Пишем либы для MidletPascal на JAVA
 
Ребят, пишу либу в NetBeans 6.7.1 . Проблемма такая - как мне применить метод GetKeyName от класса Canvas текущего приложения?

Просмотрел исходники M.java, FW.java, P.java, которые нашел в этой теме по-моему, но в них не передается что-то типа
public static Canvas C . Подскажите пожалуйста как быть?

UPD: Разобрался, нужно было обращаться M.T. (проглядел).

Trazzy 12.09.2009 04:40

Ответ: Пишем либы для MidletPascal на JAVA
 
Где скачать JAVA SDK и jGRASP? Киньте ссылки..

ViNT 12.09.2009 12:44

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

Сообщение от ArtikZ (Сообщение 118315)
Где скачать JAVA SDK и jGRASP? Киньте ссылки..

Для написания библиотек достаточно j2me WTK, лежит где-то на сайте SUN.

cherepets 31.03.2010 12:38

Ответ: Пишем либы для MidletPascal на JAVA
 
эм, вопрос про либы для МП:
а как вызвать перерисовку канвы (обычный репаит) из либы?
декомпиля исходники прог на самом мп увидел там:
PHP код:

T.repaint(); 

T как я понял надо делать канвой и сделал так:
PHP код:

M T null;
T.repaint(); 

но мидлет виснет тогда((
_________________________________________________
вышло)))
PHP код:

M N M.T;
N.repaint(); 

вопрос снимается))
_________________________________________________
а никто часом не знает как получить то что отрисовано (аналог image from canvas)?
желательно вариант с S классом не предлагать

odd 31.03.2010 16:21

Ответ: Пишем либы для MidletPascal на JAVA
 
Вот так надо:
PHP код:

M.T.repaint();
M.T.serviceRepaints(); 


cherepets 31.03.2010 19:40

Ответ: Пишем либы для MidletPascal на JAVA
 
а serviceRepaints что именно делает?

odd 01.04.2010 12:44

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

Сообщение от cherepets (Сообщение 143779)
а serviceRepaints что именно делает?

Сообщает системе (телефону), что перерисовку нужно делать немедленно.
В противном случае телефон поставит операцию перерисовки в очередь и совершит её когда ему будет удобно (может и вообще никогда). Это напоминает вызов сборщика мусора - когда телефону нечего делать он может начать чистить свою оперативную память. Тут ситуация похожая, только тут перерисовка связана с с такими "железячными" вопросами как частота обновления экрана, синхронизация сигнала и проч. Поэтому сам производитель телефонов решает когда ему там удобно перерисовать экран. Иногда возникает противоположная проблема. Предположим, некая программа программно генерирует кучу графики. Для этого она что-то рисует на экране (без перерисовки), потом делает снимок экрана для себя и помещает снимок в переменную для дальнейшего использования. Так вот, по-идее пользователь и не должен ничего увидеть на экране (перерисовки-то нет вовсе), но на деле не так. Телефон может всё равно вызывать перерисовку экрана по своему усмотрению. Скажем не делал перерисовку пару секунд - телефон возьмет и сам сделает перерисовку от доброты душевной, хотя в данном случае лишь окажет медвежью услугу.

cherepets 01.04.2010 21:52

Ответ: Пишем либы для MidletPascal на JAVA
 
жестко однако...
лучше эти производители нормальный функционал до ума довели, а то задолбал самсунг шипеть и щелкать в проигрывателе и не звонить по утрам...

t()}{@ 15.09.2010 23:04

Ответ: Пишем либы для MidletPascal на JAVA
 
"Щелкните по нему два раза и нажмите кнопку Create, для создания этого файла." --------- я чёто не нашел кнопку Create где она?

Kalter 12.05.2014 20:10

Ответ: Пишем либы для MidletPascal на JAVA
 
У меня такой вопрос: как использовать класс M при написании библиотеки? И где его взять?


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

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