Прежде всего нам понадобятся:
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. Теперь самая интересная чать... кодинг :). В открывшееся окно вводим следующий код: Код:
// Класс модуля НЕ ДОЛЖЕН содержаться в каком-либо архиве!!! Вот и все. Нащ модуль готов. Теперь настало время его протестировать. Для начала скопируем наш модуть из папки \classes\ нашего проекта в папку \Program Files\MIDletPascal\Libs\. Далее в MIDletPascal создаем новый проект и вводим туда следующий код: Код:
program NewProject; |
Ага из хелпа пример работает. А больше 2к кода перестает видеть функции.
|
Цитата:
|
Не не прикольно. Хочу разобраться где тут собака порылась. На java то все работает.
Ведь переношу функцию выше по исходному тексту и все начинает работать. |
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 за его работу,я на ура применил его библиотеку для файлменеджера,но с байтами там нето что-то! |
Re: Пишем либы для MidletPascal на JAVA
Ё-моё, у вас всё хорошо идёт, а у меня не компилится ни так, как в хелпе написано, ни так, как здесь сказано. У меня WTK25, как мне быть? Если так нужен WTK1, то где его взять? На сайте видел только 2.2...
|
Re: Пишем либы для MidletPascal на JAVA
Я заметил, что после компиляции приложения, в jar архиве появляется FW.class, что это такое и откуда берется? Если заглянуть в справку, то там этот же файл использовался для написания своей библиотечки....
|
Re: Пишем либы для MidletPascal на JAVA
Это главный класс приложения, он генерируется самим MP.
В основном взаимодействие библиотек с приложением происходит именно через классы FW и M. |
Re: Пишем либы для MidletPascal на JAVA
То есть при написании библиотек нужно/можно ссылаться на эти классы?
|
Re: Пишем либы для MidletPascal на JAVA
Да, если например нужно работать с дисплеем, то это можно делать только через эти классы. То же самое относится и к плееру(класс P, переменная p).
|
Re: Пишем либы для MidletPascal на JAVA
А как компилить либы с использованием MP классов? Скажем, я хочу обратитьься к M.G. компилятор ругается на отсутствие этих классов, может надо прилагать M.java к файлу библиотеки? Опишите plz такую компиляцию, а то я чисто java классы могу использовать, а к классам MP нет доступа.
|
Re: Пишем либы для MidletPascal на JAVA
при компиляции просто кладешь в папку со своей библиотекой FW.java и он компилируется вместе с ней, ну а потом его просто игнорируешь.
можно еще другим способом: указать в classpath папку с FW.class |
Ответ: Пишем либы для MidletPascal на JAVA
Здравствуйте, я джаву не знаю толком, только в общих чертах. Не могли бы вы написать пример либы, как вывести текст на канвас. Я понимаю, что в мидлет паскале это просто через drawText() делается =) Но мне просто посмотреть охота, как в либе это реализовать, понять нужно. Ну вот, например, нужно сделать либу с одной функцией, которая будет работать аналогично drawText(), но называться, скажем, printText(). Напишите, если не сложно, а то я уже как только не пробовал.
|
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
Код:
import javax.microedition.lcdui.Graphics; |
Ответ: Пишем либы для MidletPascal на JAVA
Спасибо =) Как я понимаю, нужно при компиляции M.class в папку положить, чтобы компилятор не ругался, да? Вот только, как вы понимаете, где писать M.G, а где, например, FW.fw?.. Я не знаю, как это называется, у меня с терминологией проблемы =) Грубо говоря, где вы вычитали через какие классы к каким кускам Джавы обращаться нужно? Я к Graphics только не пробовал, но всё ошибка была =) По такому-то ведь в джаве можно так, если не ошибаюсь:
javax.microedition.lcdui.Graphics.drawString(s, x, y, 20); Почему же в мидлет паскале нельзя так? Почему всё так запутано? - - - Сорри за такой тупой пост, просто я до этого толком только на php писал, а на нём даже обезьяну можно научить кодить :D |
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
Цитата:
Цитата:
|
Ответ: Пишем либы для MidletPascal на JAVA
Позвольте, джаву-то, разумеется, нужно знать, но тут ещё нужно и мидлет паскалевские классы знать. Напишем так в джаве:
M.G.DrawString И ничего не выйдет. Я пытался джава класс переделать в мидлет паскалевскую либу, так ничего не получалось. Ну сейчас я уже в общем-то побольше понял, думаю, что справлюсь =) Цитата:
- - - Я помню, про наследование читал, если не ошибаюсь, экземпляр класса наследует все его свойства, так какая разница как писать? О_о Или я чего-то недогоняю? - - - Вот что каждая часть этой строки обозначает: M.G.drawString(s, x, y, 20); ??? M - это МидлетПаскалевский класс. Это понятно. G - это переменная-экземпляр javax.microedition.lcdui.Graphics? А где это описано? В том же классе M переменной G присваивается экземпляр ...Graphics? А drawString - это как правильно назвать? Функция? Процедура? - - - Я немного отрывочно в теории немного это всё знаю. Ну, например, знаю, что javax.microedition.lcdui - это типа один из пакетов Джавы, в каждом из пакетов хранятся какие-то определённые возможности. Например, если нужно нам работать с графикой, нужно через импорт этот пакет в файл класса подключить. Можно написать так: javax.microedition.lcdui.* Тогда в файл как бы подключатся все (вот опять забыл как правильно назвать, то ли функции, то ли методы, то ли классы) этого пакета. |
Ответ: Пишем либы для MidletPascal на JAVA
Естественно, знать классы MP нужно, но их описания нигде нет, поэтому приходится изучать самому, опираясь на знание java.
Цитата:
Цитата:
p.s. Терминология не главное, я сам в ней иногда немного путаюсь, главное - понимать, как это работает. |
Ответ: Пишем либы для MidletPascal на JAVA
Уже начинаю въезжать. Но терминалогию я плохо знаю, поэтому сложно даже вопросы задавать, так как не знаю как вещи правильно назвать. =) Что ж... Если смогу написать либу, то буду считать, что первый шаг сделан =)
|
Ответ: Пишем либы для MidletPascal на JAVA
Код:
import javax.microedition.lcdui.Graphics; Теперь есть такие вопросы: 1) Почему-то не получается вызвать репэинт из либы. Это возможно? 2) Как в либе обращаться к функции изменения шрифта? M.G.setFont() не работает. 3) Как в либе получить ширину экрана, вычесть из неё длину строки в пикселах и разделить на два? =) Ну типа чтобы вместо координаты x текст всегда по центру позиционировался. M.G.getClipWidth() и M.G.stringWidth(s) вроде не работают. =( - - - Я понимаю, что всё это легко делается на самом мидлет паскале, но мне нужно понять, как в либе это сделать, чтобы научиться писать что-то более сложное. Сильно не пинайте. = = = Добавлено позже: Пардон, разобрался с половиной вопросов =) Код:
import javax.microedition.lcdui.*; M.G.setFont(M.G.getFont(M.G.getFont().FACE_SYSTEM, M.G.getFont().STYLE_BOLD,M.G.getFont().SIZE_SMALL) ); Код:
Lib_test.java:6: getFont() in javax.microedition.lcdui.Graphics cannot be applied to (int,int,int) = = = Добавлено ещё позже: Блин, а что делать, если мне нужно глобальную переменную использовать? Ну я не знаю, как это в Джаве называется. То есть мне нужно в либе сделать несколько функций/процедур, которые будут использовать одни и те же переменные. Можно, конечно, сделать, чтобы функции возвращали значения, которые потом использовались бы в других функциях путём явной передачи их туда. Но дело в том, что там функция возвращает не одну переменную, а несколько. Может можно сделать что-то типа массива или... я даже не знаю. Чтобы в одной переменной сразу кучу передавать. - - - У меня класс есть, я его хотел подключить к мидлет паскалю хитрым способом. Типа написать либу, которая будет к тому классу обращаться по-мидлетпаскалевски, все процедуры объявил статичными, а при компиляции мне выдало, что те функции, к которым я пытаюсь обратиться из либы не являются статичными. То есть что, получается, я не могу из статичной функции одного класса обратиться к нестатичной функции другого класса? О_о Как выходить из такой ситуации? - - - В мидлет паскале можно создавать комбинированный тип данных. Полагаю, что это может пригодится, но как его связать с джавой? - - - P.S: подозреваю, что я опять всё напутал и вместо слова "функция" следовало употреблять слово "метод" =) |
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
Код:
class Lib_test Код:
class MyClass Код:
class Lib_test |
Ответ: Пишем либы для MidletPascal на JAVA
Опа! Спасибо! Я почти так и делал, только эту строку не добавлял:
public static MyClass my; Теперь всё откомпилировалось. И в мидлет паскале без ошибок откомпилировалось. Но программа не идёт. Запускаю на эмуляторе и он тут же закрывается. =( В классе используются пакеты import java.util.Vector; import javax.microedition.lcdui.*; Это имеет значение? В чём может быть дело? - - - Запустил на телефоне (Сименс С75). Прога запустилась. Просто белый экран. На функции из либы/класса повисло, иначе бы через 10 секунд прога сама закрылась бы, так как delay(10000); стоит. |
Ответ: Пишем либы для MidletPascal на JAVA
M.G.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL);
не забываем import javax.microedition.lcdui.Font; PS: а где Вы простите создаете экземпляр класса my? |
Ответ: Пишем либы для MidletPascal на JAVA
1) На Font.getFont, а именно на Font ругается компилятор во всех местах, где я его пытаюсь использовать.
2) Что такое экземпляр? Я писал так, как в примере odd'а. Компиляция успешно прошла. - - - Это я хочу прикрутить класс для мультистрочного вывода текста к мидлет паскалевской программе =) А ещё лучше полностью его в либу переписать. Хочу понять, как вообще писать либы. - - - Добавил позднее: Мда. Переписал весь класс в либу. Он откомпилировался. Положил его в мидлет паскаль. Написал прогу на мидлет паскале, нажимаю Буилд, он мне выдаёт, что одной из функций в либе нет. После 10 минут предпринимания всяких нелогичных действий я решил в либе поменять местами функции. То есть в принципе ничего не изменилось. Откомпилировал заново и, О ЧУДО, мидлет паскаль стал видеть все функции! Откомпилировалась прога, запускаю и... Опять просто белый экран =( Но теперь уже идёт на эмуляторе и закрыввается через 10 секунд =) Значит процедуры из либы не повисают, а выполняются =) Но должен текст выводиться на экран, блин! P.S: Процедура, которую паскаль не хотел видеть, находилась в самом конце файла (либы имеется в виду). Возможно он не может длинные либы воспринимать как надо =( Тут уже кто-то писал, что в больших либах перестаёт видеть функции... |
Ответ: Пишем либы для MidletPascal на JAVA
Мдаааа... Откомпилировал этот класс, сделал всё на Джаве, вообще без мидлет паскаля... В эмуляторе идёт, отображается текст, работает прокрутка... А на моём сименсе при запуске ввыдаёт:
MIDlet initialization failed: java.lang.Error: 56 Может это потому что текст в ANSI? Пробовал компилировать в UTF-8 - на эмуляторе просто белый экран, на телефоне не тестил. Что-то с этим классом не то... |
Ответ: Пишем либы для MidletPascal на JAVA
Код:
import javax.microedition.lcdui.Font; |
Ответ: Пишем либы для MidletPascal на JAVA
Поделись исходниками, будем вместе думать почему там у тебя происходят ошибки и зависания. Попробуй в либу Lib_test добавить конструктор типа:
Код:
Lib_test Код:
try |
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
import javax.microedition.lcdui.*; Это ведь означает, что теперь в классе можно использовать всё из пакета import javax.microedition, в том числе и Font. Разве не так? О_о Цитата:
http://wapcode.ru/mls.zip - это мои наработки. Это я пытался либу использовать как промежуточный класс для связи класса с мидлет паскалем. - - - Наверно, надо перебираться на чистую джаву... - - - А это что значит: catch (Exception e) ? Ошибку на экран выдаст? И программа дальше будет выполняться? Или try/catch - это типа die() в php? |
Ответ: Пишем либы для MidletPascal на JAVA
http://forum.boolean.name/showthread.php?t=6093
ЗЫ: если так получается здесь почему есть уверенность, что получится на чистой яве? |
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
- - - Вопрос не в тему: Почему когда я в свойствах проекта ставлю MIDP 2.0, то приложения получаются неполноэкранные? А когда MIDP 1.0, то всё нормально. Телефон Сименс С75. Сверху и снизу остаются полоски с картинкой, которая в теме телефона установлена. То есть площадь канваса становится примерно 132x148 вместо 132x176 О_о - - - Добавлено гораздо позже: Разобрался, поставил другую версию паскаля с сайта ODD'а. - - - У меня не получается сделать класс и либу. Вот я хочу, например, сделать класс, чтобы он весь экран заливал тёмносерым цветом. Файл gr.java: PHP код:
PHP код:
PHP код:
|
Ответ: Пишем либы для MidletPascal на JAVA
А файл gr.class в проект добавлял? Вообще библиотеки к MP лучше писать одним файлом, а не разбивать на кучу файлов.
|
Ответ: Пишем либы для MidletPascal на JAVA
Всё добавлял. Не работает =( Так я просто тренируюсь, изучаю. Хотел написать класс, а добавить его к мидлет паскалю при помощи либы. Вот =( Не выходит...
- - - Блин. У меня по ходу что-то с компилятором не в порядке... Пытаюсь откомпилировать либу пилигрима, мне ошибку пишет: Код:
Lib_text.java:9: cannot find symbol |
Ответ: Пишем либы для MidletPascal на JAVA
Я если честно не уловил где g, который Graphics в классе gr получает значение M.G? Если этого нет, то простите, на чем мы рисуем?
|
Ответ: Пишем либы для MidletPascal на JAVA
Ыыы... Пардон... Ща попробую исправить. Но, кстати, когда пытаюсь откомпилить твою либу, как раз компилятор ругается на M.G, которое ты передаёшь классу. Я уж не знаю почему. Класс M.class лежит где надо, его компилятор видит.
- - - Добавил спустя пару минут: Мда... Теперь компилятор и на мою либу ругается с точно такой же ошибкой. Указатель показывает на точку между M и G. То есть, как я понимаю, класс M.class видит, но пишет, что переменной G нет или что-то типа того =( Раньше пробовал подобное делать, вроде получалось... Что-то тут нездоровое... - - - Ещё спустя минут 7: Блин. Я вообще ничего не понимаю. Заменил M.class на другой, из другого проекта - всё нормально откомпилировало! Видимо, у меня ещё и класс этот какой-то не сосем нормальный был... Но ведь в принципе от приложения не зависит. От любого ведь должен подойти, мидлетпаскалевского, разумеется. - - - Спустя почти два часа: А можно как-нибудь из либы передать M.G сразу в класс, а не в определённую функцию? Можно, конечно, сразу в классе прописать private Graphics g=M.G; тогда работает. Но если поставить себе такое условие, что нельзя так делать. А в классе две функции. Одна из них будет через либу использоваться в паскале, а вторая многократно вызывается первой. Обоим им нужен M.G. Пока сделал, чтобы из первой во вторую передавалась переменная g в качестве параметра. То есть, первая из либы получает M.G, юзает там его, потом вызывается много раз вторая функция и каждый раз передаётся в неё полученный M.G... Во как. - - - Спустя ещё два часа: Всё. Пора убить телефон ап стену и выкинуть комп в окно. Ничего у меня не получается. На эмуляторе идёт, на сименсе белый экран и висит. У брата на смарте тоже белый экран и висит. Переписал всё просто в либу, без класса. Ситуация не изменилась. Добавил в каждую функцию try/catch, всё равно на эмуляторе идёт, а на телефонах нет. В чём может быть дело? Памяти, вроде, тут не использует много. Всё только примитивная работа с графикой... |
Ответ: Пишем либы для MidletPascal на JAVA
А что за компилятор, если не секрет? Какая среда разработки?
|
Ответ: Пишем либы для MidletPascal на JAVA
SUNовский компилятор. Через командную строку. javac.exe и preverify1.1.exe...
|
Ответ: Пишем либы для MidletPascal на JAVA
Не советую компилять либы напрямую через javac(нсли это WTK) - у меня только 2 из 10 нормально компилятся, на остальных мобила зависает - моторовский отладчик в MIDWay пишет ошибку верификации класса. Юзайте JB и будет вам счастье =).
|
Ответ: Пишем либы для MidletPascal на JAVA
Можно и напрямую javac, просто не забывайте добавлять -source 1.3 -target 1.3, чтобы соответсвовало CLDC 1.1
|
Ответ: Пишем либы для MidletPascal на JAVA
Пилигрим, так ведь прога-то получается в CLDC 1.0. По крайней мере так в манифесте прописано. Но попробую добавить эти ключи. А JB я как-то, вроде, качал, точно не помню. Ещё когда в первый раз хотел заняться Джавой. Что-то он мне не понравился, может путаю, или это я про MS VS... О_о То, что VS мне не понравился - это точно, один дебагер только ваще задрал. В основном брата =) У него постоянно из игр выкидывало с какими-то ошибками =) А вообще, мне среду разработки не надо, компилятора хватает. Так понять суть работы проще. А ещё подумываю написать он лайн компилятор, чисто так, ради интереса. Буду с локала запускать. Кто тестером будет? =)
- - - Чуть позже: Пилигрим, ты гений! Добавил ключи и всё работает!!! - - - Позднее: А у брата на смарте так и белый экран :'( |
Ответ: Пишем либы для MidletPascal на JAVA
для CLDC 1.0 по-моему вообще надо -target 1.1.
Да, вот точно: Цитата:
|
Ответ: Пишем либы для MidletPascal на JAVA
Написал -source 1.1 -target 1.1 вместо -source 1.3 -target 1.3.
Компилятор ругался на -source 1.1. Написал -source 1.3 -target 1.1 - всё заработало!!! И на сименсе, и на смарте, и на эмуле!!! Родили, блин :D :D :D Вот оно - счастье! =) - - - P.S: Ничего, что эта тема больше походит на мой блог? |
Ответ: Пишем либы для MidletPascal на JAVA
Блин, Джава вообще со строками работать умеет??? Я полночи инфу в гугле ищу, ещё смотрю книжки Пирумяна и Горнакова. Ничего не могу толком найти. Или я чего-то не понимаю. Как мне, например, получить субстроку от строки, начиная с определённого по счёту символа? Как узнать длину строки? Как поиндексно обращаться к строке? Ну например:
Код:
String s = "Привет"; - - - Позже: Создал по аналогии с декомпилированным мидлетпаскалевским классом вот такую функцию: Код:
public static int myfunc(String s,int i){ - - - Я так понимаю, в моём примере выше s - можно назвать объектом типа String, а всё, что после приписывается через точку - это типа методы что ли? Это я просто так спрашиваю, так как с формулировками ещё не особо разобрался... |
Ответ: Пишем либы для MidletPascal на JAVA
Ну ты даешь. Это же азы.
String s = "Привет"; Длину строки теперь можно узнать так: int len = s.length(); Вырезать одну букву: char ch = s.charAt(0); Отрезать кусок текста: String s2 = s.substring(2, 5); // Результат: "иве" PS: Юзай NetBeans 6.1 и будет тебе щастье. Советую также заглядывать в документацию по MIDP2.0 из пакета WTK. |
Ответ: Пишем либы для MidletPascal на JAVA
Спасибо огромное! Я заглядывал в документацию MIDP2.0 из пакета WTK, только дальше главной страницы не пошёл, что-то мне всё показалось там не в тему =)
- - - Слушайте, а вот если я использую indexOf(">") и в строке находит этот символ, то возвращается его индекс в строке, а если нет - мидлет повисает на этом месте =( А можно как-нибудь сделать так, чтобы в таком случае возвращался индекс последнего символа ну или символ конца строки типа?.. Пробовал засунуть эту функцию в условие if и приравнять внутри условия к нулю: if((i=s.indexOf(">"))==0) i=s.length()-1; То есть по моей логике если символ будет найден в строке, то возвратится TRUE и условие будет ложным, а если символ не найден, то возвратится FALSE, который при сравнивании с нулём выдаст TRUE и i будет равно последнему символу =) В php я подобным способом пользуюсь часто, думал и сдесь прокатит... Так ведь нет... Мидлет повисает при запуске... Почему? Может вставить try? А он не тормозит в общем? Просто я после php помешан на оптимизации =) А в скобочках у catch() что писать? Смотрел исходники разные, там по-разному пишут. В общем, что в таких ситуациях обычно делают при кодинге на Джаве? - - - P.S: А компилятор у меня теперь почти никогда не ругается, то ли совет Пилигрима помог, то ли я меньше ошибок делать стал =) = = = Блиин. Так тоже повисает: try{ i=s.indexOf(">"); }catch(Exception exception){ i=s.length()-1; } = = = Ещё такой вопрос. Если у меня есть строка "32fd45" - цвет rrggbb, то как мне эту строку самым простым способом заюзать в setColor? |
Ответ: Пишем либы для MidletPascal на JAVA
То есть нужно как-то строку вида "rrggbb" превратить в 0xrrggbb (это как называется? Константа? Ну типа три байта). Можно, конечно, написать функцию, которая пропарсит строку и сделает три числа 0-255 для передачи их в функцию setColor(), но мне кажется можно как-то проще это сделать.
|
Ответ: Пишем либы для MidletPascal на JAVA
1. String.indexOf(..) - возвращает -1 если не нашел вхождение.
2. setColor(Integer.parseInt("32fd45", 16)); |
Ответ: Пишем либы для MidletPascal на JAVA
Вот ё-моё, я ведь видел в исходниках Integer.parseInt(), но что-то тему не сумел развить =)
- - - Скоро эту тему можно будет переделать в учебник по Джаве для начинающих =) |
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
Например Integer.parseInt("aabbcc", 16); // Пашет а Integer.parseInt("ffaabbcc", 16); // Зависает :-( Т.е. при работе со всеми четырьмя байтами парсинг не поможет.:crazy: |
Ответ: Пишем либы для MidletPascal на JAVA
А ты результат работы функции напрямую использовал в setColor? А в сет колор если 4 байта передать, то первый будет на альфаканал указывать? Ну мне пока с альфой не надо работать. Мне три байта надо - всё работает =)
|
Ответ: Пишем либы для MidletPascal на JAVA
Предположим у меня есть глобальная переменная x и есть локальная внутри функции, тоже x. Как мне внутри функции присвоить значение локальной переменной - глобальной?
this.x=x; не работает. Компилятор пишет, что типа нельзя так в статичных функциях делать или что-то типа этого =( Пока выкрутился. Просто переменные по-разному назвал. Глобальную - x, а локальную - xx. В итоге так работает как надо: x=xx; |
Ответ: Пишем либы для MidletPascal на JAVA
Тогда можно писать Lib_mylib.x=x.
|
Ответ: Пишем либы для MidletPascal на JAVA
здесь дело не в одинаковости имен. Компилятор же четко пишет, что нельзя обратиться к полю класса из статической функции. это можно сделать только если какой-то статической переменной присвоен сам класс.
т.е public static MyClass inst; .... inst = this; из метода класса .... а потом можно обращаться к полям через inst.x из любой статической функции. |
Ответ: Пишем либы для MidletPascal на JAVA
Кстати, если хочешь получить размер дисплея, надо писать не
PHP код:
PHP код:
|
Ответ: Пишем либы для MidletPascal на JAVA
Мда. Проще оставить с разными названиями переменных. О_о
- - - PHP код:
|
Ответ: Пишем либы для MidletPascal на JAVA
Так это и есть на java.
Кстати, я размер получаю по-другому, но тоже работает: PHP код:
|
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
|
Ответ: Пишем либы для MidletPascal на JAVA
А... В этом смысле...
В java тоже должен быть главный класс мидлета, в нем - Display и т.д. |
Ответ: Пишем либы для MidletPascal на JAVA
Понятно, спасибо =)
- - - Написал я свою первую библиотеку!!! Ура, товарищи!!! Зацените, плиз: http://wapcode.ru/Lib_st.zip Там в файле внутри архива всё подробно описано, для чего она, и пример там же. |
Ответ: Пишем либы для MidletPascal на JAVA
У нас считается хорошим тоном выкладывать библиотеки в соответствующий раздел. Было бы неплохо поддержать эту традицию.
|
Ответ: Пишем либы для MidletPascal на JAVA
Слушайте. Есть две библиотеки. Одна - моя Lib_st, вторая - тоже я написал, но там тупо просто по экрану рисует. По отдельности они в мидлет паскале работают, а обе сразу - компиляция проходит, но мидлет сразу закрывается в эмуляторе =( В чём может быть дело? Не может быть путанницы в том, что я в обоих библиотеках использовал одинаковые названия глобальных переменных? Потому-что я уже не знаю, на что косить...
- - - А можно из мидлет паскаля передать в качестве параметра функции массив в функцию, описанную в либе? Как в Джаве массивы создавать? |
Ответ: Пишем либы для MidletPascal на JAVA
По первому вопросу: из-за одинаковых переменных точно не может быть, чтобы понять в чем дело, нужен код библиотек и код на MP. По второму - массив передать нельзя, можно сделать так, чтобы массив с определенным именем создавался в программе, а библиотека напрямую читала данные из него. В java массивы создаются так:
PHP код:
|
Ответ: Пишем либы для MidletPascal на JAVA
А джава умеет увеличивать размер массива по ходу ввыполнения программы? Ну, например, я выделил 10 ячеек, а мне потом 11 понадобилось? На сколько я знаю, так нельзя ни в Джава, ни в С++... Почему такая недоработка языков?
Цитата:
А добавлять в массив значение обязательно с указанием индекса? Или можно так: mass[]="Привет"; А ещё я читал, что массиввы в Джава памяти много кушают оперативной. Какой размер массивва считается приемлемым, а какой перебором? Ну вот, например, я хочу держать в памяти массив из 100 строковых ячеек, в каждой строка около 40 символов. Это нормально? - - - Извиняюсь, что осыпаю вопросами, но просто больше негде спрашивать. Вот предположим мне нужно сделать такой эффект: На экране что-то нарисовано. Нужно как бы наложить серую плёнку на весь экран. То есть выглядеть это будет, словно экран потемнел, потускнел типа =) А потом взять и вернуть экран в предыдущее состояние. Видел подобный эффект в некоторых играх. Как это сделать - я даже не знаю с какой стороны подойти. В теории есть некоторые мысли. Скопировать в некий буфер (например в массив aarrggbb) каким-нибудь образом весь экран, потом пересчитать каждый пиксел в потускневший вид и вывести на экран. Потом вывести из буфера первоначальный вид экрана. Есть другая мысль, без пересчёта пикселов вручную. Просто залить весь экран серым цветом с альфа-прозрачностью. Но его перед этим разумеется копировать, чтобы потом опять восстановить. Так вот. Стоит ли вообще это всё делать? Возможно вся эта операция будет на столько медленной, что мой сименс, к примеру, будет 10 секунд эту "пелену" накладывать. О_о - - - Блин, где можно исходников на Джава найти? Побольше бы. Того глядишь, я сам разбираться буду потихоньку =) = = = Добавил позже: Нашёл инфу по drawRGB()... Заюзал... Сделал типа тест... Мой сименс показал 1 fps :'( То есть он успевает только одно перекрытие пеленой в секунду сделать. То есть собственно сама операция и длится секунду... Это очень плохо... |
Ответ: Пишем либы для MidletPascal на JAVA
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Ответ: Пишем либы для MidletPascal на JAVA
в Java есть еще понятие вектора, это безразмерный массив, грубо говоря, но и скорость его работы в разы ниже.
|
Часовой пояс GMT +4, время: 22:22. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot