Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Пишем проги для мобилок.Простейшее клиент-серверное приложение. |

05.12.2007, 22:51
|
|
Познавший АНТИЧАТ
Регистрация: 07.01.2007
Сообщений: 1,263
Провел на форуме: 3326855
Репутация:
702
|
|
Пишем проги для мобилок.Простейшее клиент-серверное приложение.
Недавно стал интересоваться программированием под мобильный устройства и набрёл на очень интересную штуку. Называется она MidletPascal. О нём и пойдёт речь.
Статья не тянет на уровень гуру-ачата, но многим будет интересна.
Немного информации о том, о чем пойдёт речь в статье.
Мидлет — программа для мобильного телефона, написанная на языке Java для виртуальной машины J2ME (Java 2 Micro Edition).
Мидлет для своего запуска требует устройство, которое поддерживает J2ME и MIDP. Как и любая другая Java-программа, однажды скомпилированный мидлет может быть запущен на любом устройстве. Наиболее популярные средства разработки мидлетов — Sun Java Wireless Toolkit с официального сайта Java и NetBeans вместе с NetBeans Mobility Pack, которые доступны на многих платформах и полностью свободны. В дистрибутиве мидлета кроме файла .jar содержится также файл .jad, в котором описывается содержимое .jar-а.
Мидлет должен удовлетворять следующим требованиям для того, чтобы его можно было запустить на мобильном телефоне:
* Главный класс должен быть потомком класса javax.microedition.midlet.MIDlet
* Мидлет должен быть упакован в .jar-файл (например, с помощью jar-tool)
* .jar-файл должен быть препроверен при помощи preverifier-а.
* В некоторых случаях .jar-файл должен быть подписан владельцем мобильного телефона.
Цитата из википедии
Так вот... Набрёл я на этот самы MidletPascal, и что интересного я про него прочитал...
MIDletPascal - паскалеподобный язык программирования, предназначенный для разработки мобильных приложений. Компилятор MIDletPascal транслирует исходный текст на Паскале в байт-код Java™ micro edition (J2ME). Программы, созданные в MIDletPascal, могут исполняться любым мобильным устройством (таким, как мобильный телефон), поддерживающим платформы MIDP 1.0 и CLDC 1.0.
Тут я подумал...а не зря ли я в школе мучался, пытаясь реализовать очередную программу на ненавистном Паскале?
Открыв компилятор я немного удивился. Привычной рабочей среды я не увидел. А увидел я вполне приятный интерфейс программы с небольшим набором фунций.
Естественно я сразу полез ковыряться в справку. В отличии от некоторых программ тут нашлось много интересного. Оказывается, программы, скомпилированные этой прогой работают и с интернетом, и с СМС, и с файлами и т.д.
В интернета нашёл пример клиент-серверного приложения. Вот его код:
Код:
var conn : http;
htmlBody : string;
contentType : string;
begin
// try to open a HTTP connection to www.google.com
if not OpenHttp(conn, 'http://www.google.com') then Halt;
// set the HTTP method (other supported methods are HEAD and POST)
SetHttpMethod(conn, GET);
// insert a User-agent header field
AddHttpHeader(conn, 'User-agent', 'MIDletPascal browser');
// send HTTP request and check if the reply code is 200 (200 = OK)
if SendHttpMessage(conn) <> 200 then Halt;
// read the HTTP response body
htmlBody := GetHttpResponse(conn);
// read Content-type response header field
contentType := GetHttpHeader(conn, 'Content-type');
// close the open connection
CloseHttp(conn);
end.
Скомпилировав данную программу и скинув её на телефон я её запустил. Ничего интересного не произошло. Телефон попросил подключиться к интернету, выкачал несколько килобайт и программа закрылась. Почесав затылок я стал искать эмулятор телефона, дабы не закачивать каждый раз файл на телефон. Выбор пал на MidpX.

Теперь проверять проги стало легче. Немного изменив предложенный выше код, и подстроив его под свои нужны я написал своё первоё клиент-серверное приложение на j2me.
Вот его код:
Код:
program SportMobile;
var conn : http;
htmlBody : string;
contentType : string;
zag: string;
text: string;
label_id: integer;
begin
///////////////////////// берём заголовок новости /////////////////////
// пытаемся подключиться к заданному URL
if not OpenHttp(conn, 'http://sportmobile.net//news_p.php?type=world&num=1&t=0') then Halt;
// выбираем метод поключения (GET, HEAD и POST)
SetHttpMethod(conn, GET);
// вставляем User-agent заголовочное поле
AddHttpHeader(conn, 'User-agent', 'MIDletPascal browser');
// посылаем HTTP запрос и проверяем ответ (200 = OK)
if SendHttpMessage(conn) <> 200 then Halt;
// читаем тело HTTP ответа
htmlBody := GetHttpResponse(conn);
zag:= htmlBody; // присваеваем его значение созданной ранее переменной
// читаем заголовок ответа Content-type
contentType := getHttpHeader(conn, 'Content-type');
// закрываем соединение
CloseHttp(conn);
////////////////////////// берём основной текст новости ////////////////
// пытаемся подключиться к заданному URL
if not OpenHttp(conn, 'http://sportmobile.net//news_p.php?type=world&num=1&t=1') then Halt;
// выбираем метод поключения (GET, HEAD и POST)
SetHttpMethod(conn, GET);
// вставляем User-agent заголовочное поле
AddHttpHeader(conn, 'User-agent', 'MIDletPascal browser');
// посылаем HTTP запрос и проверяем ответ (200 = OK)
if SendHttpMessage(conn) <> 200 then Halt;
// читаем тело HTTP ответа
htmlBody := GetHttpResponse(conn);
text:= htmlBody + zag; // присваеваем его значение созданной ранее переменной
// читаем заголовок ответа Content-type
contentType := GetHttpHeader(conn, 'Content-type');
// закрываем соединение
CloseHttp(conn);
////////////////////// выводим новость на экран /////////////////////
label_id := formAddString(zag);
label_id := formAddString(text);
showForm;
setTicker('Last football news'); //показываем заголовок программы
delay(-1); //безпрерывное выполнение проги
end.
Начнём рабирать код. Для тех, кто учил паскаль иди делфи не составить труда расшифровать его. Для остальных немного подробнее расскажу.
Начало программы начинается со слова programm
Далее идёт блок описания переменных, который начинается со слова var
Потом идёт служебное слово begin, обозначающее начало основного кода программы(так же оно используется для обозначения операторных скобок).
И сам код программы, который довольно понятно прокомментирован.
В итоге мы получили приложение, котое умеет показывать последние спортивные новости. Ничего сложного в этом нет. Дерзайте 
Все права пренадлежат мне, при копипасте не забывайте давать сюда ссылку. Вот только одно НО. Не могу понять, почему сайт отдаётданные в юникоде, а приходят кракозябры...
Надеюсь было интересно. Ваш inlanger
ссылки на нужные файлы:
MidletPascal
MidpX
Последний раз редактировалось inlanger; 05.12.2007 в 23:58..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|