Авторские статьи Пишем проги для мобилок.Простейшее клиент-серверное приложение.

Discussion in 'Статьи' started by inlanger, 5 Dec 2007.

  1. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Недавно стал интересоваться программированием под мобильный устройства и набрёл на очень интересную штуку. Называется она MidletPascal. О нём и пойдёт речь.
    Статья не тянет на уровень гуру-ачата, но многим будет интересна.
    Немного информации о том, о чем пойдёт речь в статье.
    Так вот... Набрёл я на этот самы MidletPascal, и что интересного я про него прочитал...

    MIDletPascal - паскалеподобный язык программирования, предназначенный для разработки мобильных приложений. Компилятор MIDletPascal транслирует исходный текст на Паскале в байт-код Java™ micro edition (J2ME). Программы, созданные в MIDletPascal, могут исполняться любым мобильным устройством (таким, как мобильный телефон), поддерживающим платформы MIDP 1.0 и CLDC 1.0.

    Тут я подумал...а не зря ли я в школе мучался, пытаясь реализовать очередную программу на ненавистном Паскале?

    Открыв компилятор я немного удивился. Привычной рабочей среды я не увидел. А увидел я вполне приятный интерфейс программы с небольшим набором фунций.
    [​IMG]
    Естественно я сразу полез ковыряться в справку. В отличии от некоторых программ тут нашлось много интересного. Оказывается, программы, скомпилированные этой прогой работают и с интернетом, и с СМС, и с файлами и т.д.

    В интернета нашёл пример клиент-серверного приложения. Вот его код:
    Code:
    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.
    [​IMG]
    Теперь проверять проги стало легче. Немного изменив предложенный выше код, и подстроив его под свои нужны я написал своё первоё клиент-серверное приложение на j2me.
    Вот его код:
    Code:
    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
     
    #1 inlanger, 5 Dec 2007
    Last edited: 5 Dec 2007
    14 people like this.
  2. FraiDex

    FraiDex Elder - Старейшина

    Joined:
    16 Jun 2006
    Messages:
    193
    Likes Received:
    68
    Reputations:
    -11
    ну эт ты загнул...
    а хотя прикольно писать проги для мобил на Pascal'e хех.. ещё бы на бейсике сделали :D
     
  3. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    будешь смеятся...но и такое есть :)
     
    1 person likes this.
  4. FraiDex

    FraiDex Elder - Старейшина

    Joined:
    16 Jun 2006
    Messages:
    193
    Likes Received:
    68
    Reputations:
    -11
    :d мдя блин... чё ток народ не придумает...
     
  5. VERte][

    VERte][ Elder - Старейшина

    Joined:
    17 May 2007
    Messages:
    240
    Likes Received:
    163
    Reputations:
    32
    есть))) Вот статейка с одного сайта:

    ____________________________________________
    DROS - DOS для мобильника

    Сегодня мы немного поворошим листву былого и установим в мобильный телефон операционку DOS, самую, что ни на есть, настоящую, с командной строкой, оснащенную интерпретатором языка Basic, FTP-клиентом и прочими наворотами, свойственными этой некогда популярной системе. Ну, а поможет нам в этом нелегком деле бесплатный Java-мидлет DROS, работающий исключительно на устройствах, поддерживающих профиль MIDP второй версии и отвечающих стандарту JSR-75 (FileConnection and PIM API).

    WAP-ресурсом проект пока не обзавелся, поэтому для инсталляции приложения придется немного пошаманить с компьютером: скачать архив dros.zip (274 кб), распаковать его и вручную, по воздуху или через "шнурок" скопировать в память мобильника JAD- и JAR-файлы.

    Запустившись, DROS выведет на дисплей стандартный командный интерфейс дисковой операционной системы, готовой в любой момент выполнить одну из нижеследующих инструкций, по большей части позаимствованных из старушки DOS:
    cd - сменить директорию
    copy - скопировать файл
    move - переместить файл
    dir - отобразить содержимое директории
    del - удалить файл/директорию
    mkdir - создать директорию
    dial - набрать указанный телефонный номер
    cls - очистить экран
    pf - распечатать файл (вывести на экран)
    run - запустить программу на языке Basic
    <имя_диска> - сменить диск
    edit - отредактировать текстовый файл
    <имя_файла>.bat - запустить командный файл
    bcolor - установить цвет фона
    fcolor - установить цвет символов
    time - отобразить текущее время
    play - проиграть указанный файл аудио- или видеоформата
    ftp - запустить FTP-клиент
    ? - вызвать справку



    [​IMG]

    [​IMG]


    Не обижен командами и встроенный клиент для передачи данных по протоколу FTP. Полный список их таков:
    оpen - открыть сервер
    user - имя пользователя
    pass - пароль для доступа к ресурсу
    cd - сменить директорию
    get - принять файл
    put - передать файл
    rename - переименовать файл/директорию
    site - выполнить команду на удаленном сервере
    dir <путь> - получить содержимое директории
    dirf <путь> - полный список директорий
    del - удалить файл/директорию
    mkdir - создать директорию
    ascii - текстовый режим передачи данных
    binary - бинарный режим передачи данных
    cls - очистить экран
    ? - помощь


    Внушает? Добавьте к этому встроенный мультимедийный плеер и интерпретатор языка Basic, возможностей которого с лихвой хватает для создания несложных программ, в том числе и графических. От перечисления списка доступных операторов мы воздержимся, напоминая, что любой желающий может с ним ознакомиться, обратившись к файлу Manual.pdf из архива с программой DROS.

    Вот, пожалуй, и все наши впечатления о мобильном эмуляторе DOS. Тем, кому до сих пор, спустя десятилетия, близки воспоминания об этой операционной системе, рекомендуем поиграться с эмулятором или хотя бы взять его на заметку - вдруг ностальгия нахлынет.

    ссыль для скачивания: http://www.whoredoeuvre.com/dros2.html
    _________________________________________

    У меня такой на телефоне стоит, ну вообщем кроме как поразвлекаться на лекциях по истории с написанием программок на бейсике, ничем больше эта прога не примечательна =)
     
    2 people like this.
  6. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    синткасис 100% идентичный паскалю?
     
  7. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    именно синтаксис - да. отличие от паскаля - больше операторов, и другие операторы для работы с гафикой.
     
  8. SQLHACK

    SQLHACK Остались только слоны

    Joined:
    27 Sep 2006
    Messages:
    437
    Likes Received:
    372
    Reputations:
    407
    Вот вам книжечка.
    Горнаков Symbian OS. Программирование мобильных телефонов на C++ и Java 2 ME
    скачать
     
    _________________________
  9. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Это надо яву учить... и не у всех мобилы с симбой. а тут - 3 метра места на винте и счастья немеряно.
     
  10. Sinex

    Sinex Elder - Старейшина

    Joined:
    17 Aug 2006
    Messages:
    111
    Likes Received:
    24
    Reputations:
    5
    А можешь помочь как написать, фотоальбом из фоток, чтоб меню было.
     
  11. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    где можно скачать MIDletPascal v2.02 гугаль облзил а там линки на офф сайты везде... а сайт закрыт их...
     
    #11 Cactuz, 18 Jan 2008
    Last edited: 18 Jan 2008
  12. Switchset

    Switchset New Member

    Joined:
    19 Aug 2007
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    как этот mideltpascal регнуть(
     
  13. Cactuz

    Cactuz Elder - Старейшина

    Joined:
    6 Jan 2007
    Messages:
    86
    Likes Received:
    5
    Reputations:
    0
    MIDletPascal v2.02 руссик есть?
     
  14. VenTeL

    VenTeL Elder - Старейшина

    Joined:
    28 Feb 2008
    Messages:
    52
    Likes Received:
    22
    Reputations:
    0
    Вот MidletPascal

    Вот сирийники: SoftoRooM.NeT
    B7VKdJ6T96hzc1C

    www.SoftoRooM.NeT
    97rJMpmcooCXI3C
     
  15. VenTeL

    VenTeL Elder - Старейшина

    Joined:
    28 Feb 2008
    Messages:
    52
    Likes Received:
    22
    Reputations:
    0
    Руссификатора нет, но есть русский хелп здесь
     
  16. EST a1ien

    EST a1ien Elder - Старейшина

    Joined:
    2 Apr 2006
    Messages:
    249
    Likes Received:
    48
    Reputations:
    16
    Бугагага чесно статья в топку
    Хорошо работа с классом CTelephny в Symbian OS. Приотм по подробней а то в SDK немного коряво описано. Ну это так для начала. А лучше работа с Dll в Symbian OS.
    :) Ладно поприкалывались и хватит.
    А если серьезно то статья для полныйшых новичков которые первый раз видят языки программирования. Всетаки статья ИМХО бред.

    Книжка тоже не очем в SDK и то лучше написано. Из книжки становится ясно что автор знает как установить CodeWarrior Больше нечего в этой книги нету. Если охота научится писать под симбу читайте зарубежные мануалы и книги.
     
    #16 EST a1ien, 15 Mar 2008
    Last edited: 15 Mar 2008
    1 person likes this.
  17. Metall

    Metall Elder - Старейшина

    Joined:
    4 Jan 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    0
    А есть что-то типа MidletC++?