Форум «Всё о Паскале» _ 32 битные компиляторы _ Написание J2me приложений для телефонов.
Автор: Altair 4.01.2006 20:49
Вступление http://www.midletpascal.com/ - язык программирования, предназначенный для создания мобильных приложений. Компилятор MIDletPascal переводит код Pascal на Java bytecode (J2ME) . Программы, написанные в MIDletPascal могут быть запущенны на любом мобильном устройстве ( типа мобильных телефонов) с Java - поддержкой. MIDletPascal - удобное средство разработки, делающее новый шаг в развитии мобильного программирования. С MIDletPascal, Вы сделаете новый шаг в мир мобильного программирования!
Особенности
Генерация быстрого и компактного Java™ bytecode.
Полная поддержка языка Pascal
Частично код может быть написан прямо на Java
Удобная работа с SMS.
Коммуникация по HTTP
Поддержка пользовательсткого интерфейса (формы).
Мультимедиа (работа со звуком, картинками)
легкая в использовании IDE
Примеры программ. Программа выводит на экран сообщение которое меняет свой цвет с черного на белый неоднократно.
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;
Пара слов о лицензии Для персонального использования, без support'a, MIDletPascal распространяется бесплатно. (download) Для комерческого ипользования Лицензия на 1 человека - 40$ на <10 - 100$ более 10 - 300$
Этапы создания приложения Пустое окно: Создание проекта Отладка - поиск ошибок Редактирование ресурсов Запуск программы. Эмуляция.
Эмуляция Что бы не проверять каждую программу на телефоне, желательно скачать и установить любой подходящий вам эмулятор мобильного устройства.
Оффициальный сайт: http://www.midletpascal.com/
Автор: FreeMan 6.01.2006 11:18
Хм. надо глянуть. если что открыть подфорум "Мобильный Паскаль"
Автор: Gothic_Snake 10.01.2006 16:20
Дофольно интересно... Лезу смотреть
Автор: hardcase 13.01.2006 19:53
Хто тут сказал
Цитата
Полная поддержка паскаля?
НЕ ВЕРЬТЕ!!!
Например: нету УКАЗАТЕЛЕЙ - а без них в процедурном языке, таком как Паскаль или С, делать нечего.
Нету передачи параметров по Ссылке!! - это вообще не в сказке сказать, не format /all убрать!
Почему нету object? Ведь Java - объектно-ориентированный язык!
Такойвот кастрированный паскаль этот MIDlet.
Под мобилы лучшее писать на Яве, по крайней мере не появится более полная версия Паская. Ато от этого просто настроение падает - Зачем таким убожеством пользоваться.
Автор: Altair 13.01.2006 20:19
Цитата
Полная поддержка паскаля?
Да полная. Почитай стандарт языка. там нет объектов. Это уже объект Паскаль. насчет передачи и указателей - еще не успели вкючить.
Цитата
Хто тут сказал
Цитата
full Pascal specification support
полная поддержка спецификации Паскаля имеловь ввиду
Автор: hardcase 13.01.2006 20:31
Цитата(Altair @ 13.01.2006 20:19)
Да полная. Почитай стандарт языка. там нет объектов. Это уже объект Паскаль. насчет передачи и указателей - еще не успели вкючить. полная поддержка спецификации Паскаля имеловь ввиду
У них уже 2.01 версия вышла! и до сих пор таких тривиальных вещей нету...
Я знаю стандарт языка. Процедурное программирование - осталось в прошлом (моё субъективное мнение). Сейчас ООП - де факто принято стандартом.
Дело в том, что Паскаль по своей сути постоянно работает с памятью - кучей. Каждый уважающий себя программист постоянно обращается к GetMemory, FreeMemory, New, Dispose. что мы видим здесь? Нету динамического выделения памяти! - Почему? да потому что низззя енто делати в Яве - ансейф коуд и сборка мусора. Яве и указателей-то нету - другая идеология. Вот поэтому нельзя реализовать ПОЛНЫЙ стандарт Паскаля.
Хочу заметить, без УКАЗАТЕЛЕЙ, на Паскале низззя реализовать ни одну стандартную структуру данных как то: список, дерево и т.п. А как без таких вещей программить? - никак.
Автор: Altair 13.01.2006 20:37
ты все сказал ?
Цитата
А как без таких вещей программить? - никак.
ты на телефоне фундаментальные задачи хочешь решать ?
Мидлет Паскаль полностью обеспечивает создание J2ME приложений.
Автор: hardcase 13.01.2006 20:43
Я просто подумывал, как написать инженерный калькулятор (вернее перенести таковой с Делфи) на мобильник. А там я парсю выражение и т. д. и т.п. На MIDlet он точно не пойдет. а на жаве писать лень.
Я говорю о том, что MIDlet паскать горрраздо слабее Явы.
Но я всёже буду следить за обновлениями - вдруг вырастет в чёнить более серьёзное.
Автор: Altair 13.01.2006 20:48
Цитата
Я говорю о том, что MIDlet паскать горрраздо слабее Явы.
Сам по себе, да. согалсен. Но там же вроде можно вставки на java делать... это его расширяет.
Автор: hardcase 13.01.2006 20:53
Цитата(Altair @ 13.01.2006 20:48)
Сам по себе, да. согалсен. Но там же вроде можно вставки на java делать... это его расширяет.
Понимаешь в чём дело..... Я сторонник "чистого" языка. Если для реализации чего-то на одном языке надо делать вставку на другом (ассемблер не в счёт - все там будем), то такой язык - не очень хороший язык или он просто не подходит для решения поставленной задачи.
Зачем ява, если я вроде как программлю на Паскале? [риторический вопрос]
Автор: virt 13.01.2006 22:11
Цитата
Каждый уважающий себя программист постоянно обращается к GetMemory, FreeMemory, New, Dispose.
А если я смог обойтись без вызова этих процедур ,то я себя не уважаю??
Списки в яве есть http://midletpascal.com/forum/viewtopic.php?t=133 . Интерфейса к ним нет.
Автор: xds 14.01.2006 16: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 17:08
товарищи, никто не нашел в MIDletPascal аналог GetPixel ? можт кто на яве дописать может ?
Автор: hardcase 14.01.2006 18:34
Цитата(virt @ 13.01.2006 22:11)
А если я смог обойтись без вызова этих процедур ,то я себя не уважаю??
Дело в том, что у меня ещё не было ни одной более-менее серьёзной программы, в которой я не использовал бы функции для работы с памятью. Подразумевается использование их во многих базовых классах моего производства, которые я постоянно использую, т.к. они несколько удобнее стандартных.
Автор: xds 14.01.2006 18:46
Цитата(GoodWind @ 15.01.2006 0:08)
товарищи, никто не нашел в MIDletPascal аналог GetPixel ? можт кто на яве дописать может ?
На Java дела обстоят плохо: только MIDP 2.0 (не на всех устройствах), предварительно загнать картинку в Image, затем Image.getRGB(). Жадно и несовместимо. Собственно, объект класса Graphics (это MIDP-аналог класса TCanvas в VCL) не связан напрямую с физическим растром - так что GetPixel возможен только у буферизованного растра, т. е. объекта класса Image. А зачем тебе GetPixel понадобился?
Автор: GoodWind 14.01.2006 19:17
дык дему писать =)))
Автор: xds 16.01.2006 0:51
Дык зачем в деме GetPixel? Что конкретно ты сделать хочешь?
Автор: GoodWind 16.01.2006 1:02
хотел эффект motion-blur к картинке добавить =)
Автор: xds 16.01.2006 7:49
В MIDP 1.0 с большой вероятностью невозможно. В MIDP 2.0, напротив, есть множество способов. Быстрее всего будет через Image.getRGB() и Graphics.drawRGB(). MIDP 2.0 поддерживает альфа-канал, что упрощает реализацию "motion blur".
Автор: virt 16.01.2006 12:23
GoodWind а ты дополнительный массив заведи ,и там дублируй содержиммое экрана. Тогда GetPixel не надо.
Автор: GoodWind 16.01.2006 19:34
Virt, медленно, пробовал
Автор: xds 17.01.2006 4:46
Быстро будет с drawRGB() - она получает весь массив сразу.
Автор: GoodWind 19.01.2006 18:46
т.е. хелп в MIDletPascal неполный ? или ты имеешь в виду вставки java-кода... и где вообще инфу можно взять ?
зы. как перевести мидлет в полноэкранный режим ? (series40, nokia 6610)
Автор: xds 20.01.2006 5: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 12:00
Полноэкранный режим:
Автор: GoodWind 20.01.2006 19:15
Altair: уже нашел.. да, я чайник..... не увидел xds: 6610 поддерживает только MIDP 1.0, полноэкранный режим поддерживается благодаря NokiaAPI...
где читать инфу по программированию соток ?
Автор: Bill Gates 11.02.2006 15:29
Подскажите, где скачать Windows-эмулятор J2ME? На сайте midlepascal.com ссылки только на километровые дистрибутивы, едмнственное ,что сноесное там midletemulator, но он работает только из браузера. Киньте ссылку на нормальный эмулятор!!!!!!!!!!
Автор: GoodWind 12.02.2006 17:31
на www.allnokia.ru (или на его форуме) есть Nokia 7210 SDK - весит около 7 метров... меньше не видел...
Автор: Bill Gates 22.02.2006 17: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] Ничего не понимаю...
Автор: Bill Gates 22.02.2006 19:45
Есть ли в мидлет паскале аналог keypressed (именно ее, а не readkey)???
Автор: GoodWind 22.02.2006 21: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 13:37
А как быть с миди?
Автор: GoodWind 24.02.2006 19:18
Цитата
А как быть с миди?
не смог заставить миди работать =(
Автор: GoodWind 2.03.2006 17:05
www.mobilab.ru - доки по программированию под мобильные устройства.
Автор: Dr.Bugy 2.03.2006 19:32
Цитата(Altair@13.01.2006 20:19 )
Почитай стандарт языка
А где его можно почитать?
Автор: Altair 9.12.2007 0:21
Статья "http://www.mirgames.ru/article/mobile/midlet"
Описание (HELP) на русском языке: MPhelp.rar ( 272.87 килобайт )
Кол-во скачиваний: 1027
Для тех, кому необходим дистрибутив (полностью русифицированный), обращайтесь ко мне лично.
http://ru.wikipedia.org/wiki/MidLetPascal
http://piligrim.at.tut.by/java/mp.html
Автор: validol 29.06.2008 11:32
Кто знает как можно позвонить? Есть к примеру номер: 123456, нужно его набрать и поговорить с человеком на другом конце.