Ответ: Пишем либы для 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 код:
|
Часовой пояс GMT +4, время: 19:28. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot