|
FAQ Часто задаваемые вопросы |
09.07.2008, 22:31
|
#31
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
А файл gr.class в проект добавлял? Вообще библиотеки к MP лучше писать одним файлом, а не разбивать на кучу файлов.
|
(Offline)
|
|
09.07.2008, 22:43
|
#32
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Всё добавлял. Не работает =( Так я просто тренируюсь, изучаю. Хотел написать класс, а добавить его к мидлет паскалю при помощи либы. Вот =( Не выходит...
- - -
Блин. У меня по ходу что-то с компилятором не в порядке... Пытаюсь откомпилировать либу пилигрима, мне ошибку пишет:
Lib_text.java:9: cannot find symbol
symbol : variable G
location: class M
MLT.SetTextPar(x, y, w, h, dy, fsz, fst, ft, M.G, s);
1 error
Указатель показывает на точку между M.G
Последний раз редактировалось Phantom, 09.07.2008 в 23:26.
|
(Offline)
|
|
09.07.2008, 23:22
|
#33
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Я если честно не уловил где g, который Graphics в классе gr получает значение M.G? Если этого нет, то простите, на чем мы рисуем?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.07.2008, 00:55
|
#34
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для 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, всё равно на эмуляторе идёт, а на телефонах нет. В чём может быть дело? Памяти, вроде, тут не использует много. Всё только примитивная работа с графикой...
Последний раз редактировалось Phantom, 10.07.2008 в 05:13.
|
(Offline)
|
|
10.07.2008, 08:18
|
#35
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
А что за компилятор, если не секрет? Какая среда разработки?
|
(Offline)
|
|
10.07.2008, 14:12
|
#36
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
SUNовский компилятор. Через командную строку. javac.exe и preverify1.1.exe...
|
(Offline)
|
|
10.07.2008, 14:42
|
#37
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Не советую компилять либы напрямую через javac(нсли это WTK) - у меня только 2 из 10 нормально компилятся, на остальных мобила зависает - моторовский отладчик в MIDWay пишет ошибку верификации класса. Юзайте JB и будет вам счастье =).
|
(Offline)
|
|
10.07.2008, 15:08
|
#38
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Можно и напрямую javac, просто не забывайте добавлять -source 1.3 -target 1.3, чтобы соответсвовало CLDC 1.1
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Piligrim за это полезное сообщение:
|
|
10.07.2008, 15:19
|
#39
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Пилигрим, так ведь прога-то получается в CLDC 1.0. По крайней мере так в манифесте прописано. Но попробую добавить эти ключи. А JB я как-то, вроде, качал, точно не помню. Ещё когда в первый раз хотел заняться Джавой. Что-то он мне не понравился, может путаю, или это я про MS VS... О_о То, что VS мне не понравился - это точно, один дебагер только ваще задрал. В основном брата =) У него постоянно из игр выкидывало с какими-то ошибками =) А вообще, мне среду разработки не надо, компилятора хватает. Так понять суть работы проще. А ещё подумываю написать он лайн компилятор, чисто так, ради интереса. Буду с локала запускать. Кто тестером будет? =)
- - -
Чуть позже:
Пилигрим, ты гений! Добавил ключи и всё работает!!!
- - -
Позднее:
А у брата на смарте так и белый экран :'(
Последний раз редактировалось Phantom, 10.07.2008 в 17:13.
|
(Offline)
|
|
10.07.2008, 17:31
|
#40
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
для CLDC 1.0 по-моему вообще надо -target 1.1.
Да, вот точно:
По реализации пересекающихся с J2SE классов, версии байт-кода CLDC 1.0 соответствует JDK 1.1, CLDC 1.1 –- JDK 1.3.
|
|
(Offline)
|
|
10.07.2008, 19:17
|
#41
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для 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: Ничего, что эта тема больше походит на мой блог?
Последний раз редактировалось Phantom, 10.07.2008 в 19:48.
|
(Offline)
|
|
11.07.2008, 06:57
|
#42
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Блин, Джава вообще со строками работать умеет??? Я полночи инфу в гугле ищу, ещё смотрю книжки Пирумяна и Горнакова. Ничего не могу толком найти. Или я чего-то не понимаю. Как мне, например, получить субстроку от строки, начиная с определённого по счёту символа? Как узнать длину строки? Как поиндексно обращаться к строке? Ну например:
String s = "Привет";
String str1 = s[0]; // str = "П";
String str2 = s[3]; // str = "в";
Ну хоть что-то, блин, посоветуйте, ведь в мидлет паскале есть функции для работы со строками! Пробовал декомпилировать мидлетпаскалевский S.class - ничего не понял =(
- - -
Позже:
Создал по аналогии с декомпилированным мидлетпаскалевским классом вот такую функцию:
public static int myfunc(String s,int i){
return s.charAt(i);
}
Методом тыка довольно быстро понял, что функция возвращает ASCII код символа с номером i строки s. Причём, если указать несуществующий индекс, то есть больше, чем длина строки, то мидлет повисает =) Уже что-то... На основе этого кучу самодельных функций для обработки строк можно сделать =) Но вот нужно ли? Должны быть в джаве ещё какие-нибудь функции!
- - -
Я так понимаю, в моём примере выше s - можно назвать объектом типа String, а всё, что после приписывается через точку - это типа методы что ли? Это я просто так спрашиваю, так как с формулировками ещё не особо разобрался...
Последний раз редактировалось Phantom, 11.07.2008 в 07:47.
|
(Offline)
|
|
11.07.2008, 08:13
|
#43
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Пишем либы для 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.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.07.2008, 08:21
|
#44
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для 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?
Последний раз редактировалось Phantom, 12.07.2008 в 06:57.
|
(Offline)
|
|
12.07.2008, 10:18
|
#45
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
То есть нужно как-то строку вида "rrggbb" превратить в 0xrrggbb (это как называется? Константа? Ну типа три байта). Можно, конечно, написать функцию, которая пропарсит строку и сделает три числа 0-255 для передачи их в функцию setColor(), но мне кажется можно как-то проще это сделать.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:11.
|