IPB
ЛогинПароль:

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Написание J2me приложений для телефонов., Midlet Pascal
Altair
сообщение 4.01.2006 20:49
Сообщение #1


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Вступление
MIDletPascal - язык программирования, предназначенный для создания мобильных приложений.
Компилятор 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;

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/


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 6.01.2006 11:18
Сообщение #2


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


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


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Gothic_Snake
сообщение 10.01.2006 16:20
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Дофольно интересно... Лезу смотреть smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 13.01.2006 19:53
Сообщение #4


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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

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

НЕ ВЕРЬТЕ!!!

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

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

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

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

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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.01.2006 20:19
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


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

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

Цитата
full Pascal specification support

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 13.01.2006 20:31
Сообщение #6


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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

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

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

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

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

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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.01.2006 20:37
Сообщение #7


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


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

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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 13.01.2006 20:43
Сообщение #8


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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

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

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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.01.2006 20:48
Сообщение #9


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


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

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


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 13.01.2006 20:53
Сообщение #10


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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

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

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

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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
virt
сообщение 13.01.2006 22:11
Сообщение #11


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


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

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

Списки в яве есть stack and lists on Java . Интерфейса к ним нет.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 14.01.2006 16:29
Сообщение #12


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Тезисы - по делу и просто так:
1) Язык Java, в некотором роде - ассемблер платформы Java. На мой взгляд, язык довольно-таки качественный - ровный и полностью объектно-ориентированный. Короче, я не против!
2) Компиляция в Java Platform bytecode с других языков - почему бы и нет? MIDlet Pascal? Да на здоровье! Ведь запросто возможен случай, когда человек: а) хочет быстро простой, но очень полезный и нужный MIDlet; б) не знает Java; в) знает Паскаль.
3)
Цитата
Каждый уважающий себя программист постоянно обращается к GetMemory, FreeMemory, New, Dispose.
The rule of thumb: динамическое выделение памяти следует применять тогда и только тогда, когда размер структуры данных станет известен в момент выполнения. Всё! Если известно, что структура "в общем-то динамическая", но при выполнении всегда вырастает до одного и того же фиксированного размера - кукиш вам, а не динамика: массив "с запасом" и вперёд! Ведь выделение блоков во всех "усреднённых" реализациях кучи (именно такие применяются в компиляторах ЯВУ) - это почти всегда цикл!

Сообщение отредактировано: xds - 14.01.2006 16:33


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 14.01.2006 17:08
Сообщение #13


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 14.01.2006 18:34
Сообщение #14


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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

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

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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 14.01.2006 18:46
Сообщение #15


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата(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 понадобился?

Сообщение отредактировано: xds - 14.01.2006 18:57


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 14.01.2006 19:17
Сообщение #16


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2006 0:51
Сообщение #17


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


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


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 16.01.2006 1:02
Сообщение #18


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


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


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2006 7:49
Сообщение #19


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


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


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
virt
сообщение 16.01.2006 12:23
Сообщение #20


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.12.2024 17:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"