Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Free Pascal, Pascal ABC и другие _ Написание J2me приложений для телефонов.

Автор: Altair 5.01.2006 0:49

Вступление
http://www.midletpascal.com/ - язык программирования, предназначенный для создания мобильных приложений.
Компилятор MIDletPascal переводит код Pascal на Java bytecode (J2ME) .
Программы, написанные в MIDletPascal могут быть запущенны на любом мобильном устройстве ( типа мобильных телефонов) с Java - поддержкой.
MIDletPascal - удобное средство разработки, делающее новый шаг в развитии мобильного программирования.
С MIDletPascal, Вы сделаете новый шаг в мир мобильного программирования!

Особенности

Примеры программ.
Программа выводит на экран сообщение которое меняет свой цвет с черного на белый неоднократно.
var color : integer;

begin
color := 0;
setFont(FONT_FACE_SYSTEM, FONT_STYLE_BOLD, FONT_SIZE_LARGE);

repeat
setColor(color, color, color);
color := color + 8;

if (color > 255) then
color := 0;

drawText('Hello world!', 0, 0);
repaint;
delay(100)
until false
end.


Программа - скринсейвер
program ScreenSaver; 

const up = 1; // these constants define the direction
down = 0; // in which the icon moves
left = 1;
right = 0;

var x, y : integer; // the current icon's left upper corner position
img : image; // handle of the image object
direction_x,
direction_y : integer; // the movement direction

begin
img := loadImage('/icon.png');

repeat
// move the icon according to the current direction
if direction_y = up then y := y - 1;
if direction_y = down then y := y + 1;
if direction_x = left then x := x - 1;
if direction_x = right then x := x + 1;

// check if the icon hit the display border
if x = 0 then direction_x := right;
if x = (GetWidth – GetImageWidth(img)) then direction_x := left;
if y = 0 then direction_y := down;
if y = (GetHeight – GetImageHeight(img)) then direction_y := up;

SetColor(255, 255, 255);
FillRect(0, 0, GetWidth, GetHeight);
DrawImage(img, x, y);
Repaint;
Delay(50);
until GetKeyPressed <> KE_NONE;
end.


Пара слов о лицензии
Для персонального использования, без support'a, MIDletPascal распространяется бесплатно. (download)
Для комерческого ипользования
Лицензия на 1 человека - 40$
на <10 - 100$
более 10 - 300$

Этапы создания приложения
Пустое окно:
Прикрепленное изображение
Создание проекта
Прикрепленное изображение
Отладка - поиск ошибок
Прикрепленное изображение
Редактирование ресурсов
Прикрепленное изображение
Запуск программы. Эмуляция.
Прикрепленное изображение

Эмуляция
Что бы не проверять каждую программу на телефоне, желательно скачать и установить любой подходящий вам эмулятор мобильного устройства.

Оффициальный сайт:
http://www.midletpascal.com/

Автор: FreeMan 6.01.2006 15:18

Хм. надо глянуть. если что открыть подфорум "Мобильный Паскаль"

Автор: Gothic_Snake 10.01.2006 20:20

Дофольно интересно... Лезу смотреть smile.gif

Автор: hardcase 13.01.2006 23:53

Хто тут сказал

Цитата

Полная поддержка паскаля?

НЕ ВЕРЬТЕ!!!

Например: нету УКАЗАТЕЛЕЙ - а без них в процедурном языке, таком как Паскаль или С, делать нечего.

Нету передачи параметров по Ссылке!! - это вообще не в сказке сказать, не format /all убрать!

Почему нету object? Ведь Java - объектно-ориентированный язык!

Такойвот кастрированный паскаль этот MIDlet.

Под мобилы лучшее писать на Яве, по крайней мере не появится более полная версия Паская. Ато от этого просто настроение падает - Зачем таким убожеством пользоваться.

Автор: Altair 14.01.2006 0:19

Цитата
Полная поддержка паскаля?

Да полная.
Почитай стандарт языка. там нет объектов. Это уже объект Паскаль.
насчет передачи и указателей - еще не успели вкючить.
Цитата
Хто тут сказал

Цитата
full Pascal specification support

полная поддержка спецификации Паскаля
имеловь ввиду

Автор: hardcase 14.01.2006 0:31

Цитата(Altair @ 13.01.2006 20:19) *

Да полная.
Почитай стандарт языка. там нет объектов. Это уже объект Паскаль.
насчет передачи и указателей - еще не успели вкючить.
полная поддержка спецификации Паскаля
имеловь ввиду

У них уже 2.01 версия вышла! и до сих пор таких тривиальных вещей нету...

Я знаю стандарт языка. Процедурное программирование - осталось в прошлом (моё субъективное мнение). Сейчас ООП - де факто принято стандартом.

Дело в том, что Паскаль по своей сути постоянно работает с памятью - кучей. Каждый уважающий себя программист постоянно обращается к GetMemory, FreeMemory, New, Dispose. что мы видим здесь?
Нету динамического выделения памяти! - Почему? да потому что низззя енто делати в Яве - ансейф коуд и сборка мусора.
Яве и указателей-то нету - другая идеология. Вот поэтому нельзя реализовать ПОЛНЫЙ стандарт Паскаля.

Хочу заметить, без УКАЗАТЕЛЕЙ, на Паскале низззя реализовать ни одну стандартную структуру данных как то: список, дерево и т.п. А как без таких вещей программить? - никак.

Автор: Altair 14.01.2006 0:37

ты все сказал ?

Цитата
А как без таких вещей программить? - никак.

ты на телефоне фундаментальные задачи хочешь решать ?

Мидлет Паскаль полностью обеспечивает создание J2ME приложений.

Автор: hardcase 14.01.2006 0:43

Я просто подумывал, как написать инженерный калькулятор (вернее перенести таковой с Делфи) на мобильник.
А там я парсю выражение и т. д. и т.п.
На MIDlet он точно не пойдет. а на жаве писать лень.

Я говорю о том, что MIDlet паскать горрраздо слабее Явы.

Но я всёже буду следить за обновлениями - вдруг вырастет в чёнить более серьёзное.

Автор: Altair 14.01.2006 0:48

Цитата
Я говорю о том, что MIDlet паскать горрраздо слабее Явы.

Сам по себе, да. согалсен.
Но там же вроде можно вставки на java делать... это его расширяет.

Автор: hardcase 14.01.2006 0:53

Цитата(Altair @ 13.01.2006 20:48) *

Сам по себе, да. согалсен.
Но там же вроде можно вставки на java делать... это его расширяет.

Понимаешь в чём дело.....
Я сторонник "чистого" языка. Если для реализации чего-то на одном языке надо делать вставку на другом (ассемблер не в счёт - все там будем), то такой язык - не очень хороший язык или он просто не подходит для решения поставленной задачи.

Зачем ява, если я вроде как программлю на Паскале? [риторический вопрос]

Автор: virt 14.01.2006 2:11

Цитата
Каждый уважающий себя программист постоянно обращается к GetMemory, FreeMemory, New, Dispose.

А если я смог обойтись без вызова этих процедур ,то я себя не уважаю??

Списки в яве есть http://midletpascal.com/forum/viewtopic.php?t=133 . Интерфейса к ним нет.

Автор: xds 14.01.2006 20:29

Тезисы - по делу и просто так:
1) Язык Java, в некотором роде - ассемблер платформы Java. На мой взгляд, язык довольно-таки качественный - ровный и полностью объектно-ориентированный. Короче, я не против!
2) Компиляция в Java Platform bytecode с других языков - почему бы и нет? MIDlet Pascal? Да на здоровье! Ведь запросто возможен случай, когда человек: а) хочет быстро простой, но очень полезный и нужный MIDlet; б) не знает Java; в) знает Паскаль.
3)

Цитата
Каждый уважающий себя программист постоянно обращается к GetMemory, FreeMemory, New, Dispose.
The rule of thumb: динамическое выделение памяти следует применять тогда и только тогда, когда размер структуры данных станет известен в момент выполнения. Всё! Если известно, что структура "в общем-то динамическая", но при выполнении всегда вырастает до одного и того же фиксированного размера - кукиш вам, а не динамика: массив "с запасом" и вперёд! Ведь выделение блоков во всех "усреднённых" реализациях кучи (именно такие применяются в компиляторах ЯВУ) - это почти всегда цикл!

Автор: GoodWind 14.01.2006 21:08

товарищи, никто не нашел в MIDletPascal аналог GetPixel ? mega_chok.gif
можт кто на яве дописать может ?

Автор: hardcase 14.01.2006 22:34

Цитата(virt @ 13.01.2006 22:11) *

А если я смог обойтись без вызова этих процедур ,то я себя не уважаю??

Дело в том, что у меня ещё не было ни одной более-менее серьёзной программы, в которой я не использовал бы функции для работы с памятью. Подразумевается использование их во многих базовых классах моего производства, которые я постоянно использую, т.к. они несколько удобнее стандартных.

Автор: xds 14.01.2006 22:46

Цитата(GoodWind @ 15.01.2006 0:08) *

товарищи, никто не нашел в MIDletPascal аналог GetPixel ? mega_chok.gif
можт кто на яве дописать может ?

На Java дела обстоят плохо: только MIDP 2.0 (не на всех устройствах), предварительно загнать картинку в Image, затем Image.getRGB(). Жадно и несовместимо. Собственно, объект класса Graphics (это MIDP-аналог класса TCanvas в VCL) не связан напрямую с физическим растром - так что GetPixel возможен только у буферизованного растра, т. е. объекта класса Image. А зачем тебе GetPixel понадобился?

Автор: GoodWind 14.01.2006 23:17

дык дему писать =)))

Автор: xds 16.01.2006 4:51

Дык зачем в деме GetPixel? Что конкретно ты сделать хочешь?

Автор: GoodWind 16.01.2006 5:02

хотел эффект motion-blur к картинке добавить =)

Автор: xds 16.01.2006 11:49

В MIDP 1.0 с большой вероятностью невозможно. В MIDP 2.0, напротив, есть множество способов. Быстрее всего будет через Image.getRGB() и Graphics.drawRGB(). MIDP 2.0 поддерживает альфа-канал, что упрощает реализацию "motion blur".

Автор: virt 16.01.2006 16:23

GoodWind
а ты дополнительный массив заведи ,и там дублируй содержиммое экрана. Тогда GetPixel не надо.

Автор: GoodWind 16.01.2006 23:34

Virt, медленно, пробовал

Автор: xds 17.01.2006 8:46

Быстро будет с drawRGB() - она получает весь массив сразу.

Автор: GoodWind 19.01.2006 22:46

т.е. хелп в MIDletPascal неполный ? или ты имеешь в виду вставки java-кода... и где вообще инфу можно взять ?

зы. как перевести мидлет в полноэкранный режим ? (series40, nokia 6610)

Автор: xds 20.01.2006 9:49

Я имею в виду стандартную библиотеку Java, которая и определяет потенциальные возможности приложений. Поскольку MIDletPascal так или иначе использует CLDC/MIDP, то я предполагаю, что в нём должны существовать те или иные возможности для обращения к большинству средств библиотеки - через вставки на Java, или ещё как-нибудь. Описание всех классов CLDC и MIDP есть в Sun J2ME WTK.

В Nokia 6610 MIDP 1.0 - полноэкранного режима или совсем нет, или только при использовании Canvas. Например, на Siemens S55 Canvas всегда в полноэкранном режиме, а Screen - в окошке. Если MIDletPascal всегда выводит через объект потомка Screen, то полноэкранный режим получить невозможно.

Автор: Altair 20.01.2006 16:00

Полноэкранный режим:
Прикрепленное изображение

Автор: GoodWind 20.01.2006 23:15

Altair: уже нашел.. да, я чайник..... не увидел
xds: 6610 поддерживает только MIDP 1.0, полноэкранный режим поддерживается благодаря NokiaAPI...

где читать инфу по программированию соток ?

Автор: Bill Gates 11.02.2006 19:29

Подскажите, где скачать Windows-эмулятор J2ME?
На сайте midlepascal.com ссылки только на километровые дистрибутивы, едмнственное ,что сноесное там midletemulator, но он работает только из браузера.
Киньте ссылку на нормальный эмулятор!!!!!!!!!!

Автор: GoodWind 12.02.2006 21:31

на www.allnokia.ru (или на его форуме) есть Nokia 7210 SDK - весит около 7 метров... меньше не видел...

Автор: Bill Gates 22.02.2006 21:46

Как проигрывать звуки?!
Если делать, как в хелпе:

Код

program alexf;
begin
    if not OpenPlayer('/alexf.mid', 'audio/midi') then Halt;    
    if not SetPlayerCount(-1) then Halt;
    if not StartPlayer then Halt;

    repeat until false;
end.

то все нормально компилируется, однако при запуске возникает ошибка.
[br]
Ничего не понимаю... sad.gif

Автор: Bill Gates 22.02.2006 23:45

Есть ли в мидлет паскале аналог keypressed (именно ее, а не readkey)???

Автор: GoodWind 23.02.2006 1:52

Цитата
function GetKeyPressed: integer;
Returns the code of the key that is currently pressed, or KE_NONE if no key is pressed. The standard key codes have predefined constant values:
· KE_KEY0
· KE_KEY1
· KE_KEY2
· KE_KEY3
· KE_KEY4
· KE_KEY5
· KE_KEY6
· KE_KEY7
· KE_KEY8
· KE_KEY9
· KE_STAR
· KE_POUND


Example
Код
begin
  while GetKeyPressed <> KE_STAR do
    begin
      Delay(100);
    end;
end.

Автор: Bill Gates 24.02.2006 17:37

А как быть с миди?

Автор: GoodWind 24.02.2006 23:18

Цитата
А как быть с миди?

не смог заставить миди работать =(

Автор: GoodWind 2.03.2006 21:05

www.mobilab.ru - доки по программированию под мобильные устройства.

Автор: Dr.Bugy 2.03.2006 23:32

Цитата(Altair@13.01.2006 20:19 )
Почитай стандарт языка

А где его можно почитать?

Автор: Altair 9.12.2007 4:21

Статья "http://www.mirgames.ru/article/mobile/midlet"

Описание (HELP) на русском языке: Прикрепленный файл  MPhelp.rar ( 272.87 килобайт ) Кол-во скачиваний: 900

Для тех, кому необходим дистрибутив (полностью русифицированный), обращайтесь ко мне лично.

http://ru.wikipedia.org/wiki/MidLetPascal

http://piligrim.at.tut.by/java/mp.html


Автор: validol 29.06.2008 15:32

Кто знает как можно позвонить?
Есть к примеру номер: 123456, нужно его набрать и поговорить с человеком на другом конце.