Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 28.12.2008, 22:35   #1
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Счастье Расширение MP

У меня тут возникла интересная идея небольшого расширения MIDlet Pascal.
1. Короче, нужно написать программу, которая будет распаковывать JAR файл и добавлять туда всё содержимое папки res2 (вместе с подкаталогами) и запаковывать всё это назад. Сама программа должна вызываться как эмулятор, т.е. с помощью нажатия кнопки "Скомпилировать и запустить". А потом отлаживать полученную программу можно кнопкой "Запустить" (конечно, нужно перед этим будет поменять эмулятор).
2. Вторая идея. Программа практически аналогичная, но уже будет выполнять антиантивирусные функции, т.е. заменять классы S.class, FW.class, FS.class и др. на патченые.
Для программы вовсе не нужен интерфейс. Все параметры передаются через командную строку. Если исхитриться, можно такое написать даже с помощью BAT файла. Ну, что, есть тут мастера кодинга на других языках кроме MP? Или мне самому написать?
(Offline)
 
Ответить с цитированием
Старый 28.12.2008, 22:50   #2
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Расширение MP

Могу натыкать на Delphi, можно без интерфейса, можно с окошком типа "скопировано то-то туда-то", как лучше. Под ZIP/UNZIP компонента есть.
------------------------
В общем-то, даже возиться с распаковкой\упаковкой не придется - у компоненты есть один интересный метод - можно натравить его на нужную папку, и он сам добавит все содержимое папки в архив вместе с подкаталогами.

Последний раз редактировалось ViNT, 28.12.2008 в 23:16.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rock2roll (14.05.2010)
Старый 29.12.2008, 15:55   #3
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Расширение MP

Проще всего сделать через .bat-файл и 7zip.
Запускать так: go.bat название_мидлета.jar

Соответственно, в текущей папке должны лежать "правильные" классы S.class и т.п.

@rem --------------------------------------------- Обновление архива мидлета
7z d 
%1 FW.class S.class SM.class
7z u -mx9 %1 FW.class S.class SM.class 
Есть ещё другие варианты, можно прикрутить перепаковку архива для уменьшения размера, обфускацию, замену ресурсных файлов и т.п.

Всё это делается в обычном bat-файле и при необходимости ещё немного с использованием скриптов.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rock2roll (14.05.2010)
Старый 29.12.2008, 22:41   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Расширение MP

В общем, предлагаю такой вариант:
Пишем программу на Delphi которая:
-при запуске с параметром типа -jar project.jar выполняет с указанным файлом действия, предусмотренные конфигурацией, хранящейся в папке проекта(о конфигурации ниже); если присутствует параметр -run:true, проект запускается после модификации;
-при запуске с параметром -setup открывается окно конфигурации, в котором можно указать:
-копировать дополнительные ресурсы или нет;
-заменить ли классы мидлета пропатченными;
-какие параметры следует изменить/добавить в MANIFEST.MF и JAD;
-какую коммандную строку эмулятора использовать при запуске;
-возможно еще что-то, предлагайте.
Конфигурация будет сохраняться в INI-файле в папке проекта.

При установке программа будет создавать 3 конфигурации эмулятора:
-для модификации мидлета;
-для модификации и запуска мидлета;
-для изменения конфигурации;
(концы в реестре уже нашел, как добавлять эмуляторы разобрался)

Реализовать все это(качественно) смогу в течение нескольких дней.

Последний раз редактировалось ViNT, 29.12.2008 в 22:46.
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо ViNT за это полезное сообщение:
@llien (19.03.2009), odd (31.12.2008), Rock2roll (14.05.2010), vitalik1 (30.12.2008)
Старый 07.01.2009, 22:05   #5
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Расширение MP

Вопрос к автору идеи: нужно ли еще что-то добавить к предложенной концепции?
З.Ы. Программа в общем практически готова, осталось доделать модуль конфигурации и все проверить.
(Offline)
 
Ответить с цитированием
Старый 09.01.2009, 23:08   #6
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Расширение MP

Итак, тестовый вариант программы готов.
Реализовано:
-Добавление дополнительных ресурсов в проект(в т.ч. и папок)
-Замена классов
-Добавление и изменение параметров в MANIFEST.MF
-После модификации генерируется новый JAD-файл
-Программа для автоматической установки "эмуляторов", запускающих программу в разных режимах

Пока тестовая верисия, простым юзерам качать не советую

Установка:
Распаковать архив в любую папку, например, в папку MP.
Запустить AddEmuls.exe, если появится сообщение "Конфигурация эмуляторов записана успешно", значит все нормально.
В MP после этого должны появиться 3 новых эмулятора:
MPExt - Модификация - выполнить модификацию
MPExt - Конфигурация - вызов модуля конфигурации проекта
MPExt - Модификация и запуск - выполнить модификацию и запустить мидлет

Далее:
В папку Patched скопировать классы, которые следует заменить.
Создать в папке проекта папку Res2 и скопировать в нее дополнительные ресурсы.
Открыть проект, запустить эмулятор "MPExt - Конфигурация"
В окне конфигурации:
Указать, нужно ли заменять классы и добавлять ресурсы
Указать коммандную строку эмулятора (как в MP)
Ввести параметры, которые следует заменить/добавить в MANIFEST.MF
Установить флажок "Модификация MANIFEST.MF" (если нудно выполнить модификацию).
OK - сохранение конфигурации.
Далее, с помощью эмуляторов
MPExt - Модификация
MPExt - Модификация и запуск

можно выполнить модификацию мидлета и его запуск.

Про MP_Ext_RunFix читать в посте #27.

Обо всех найденных ошибках просьба сообщить.
Вложения
Тип файла: zip MP_Ext_Test.zip (435.4 Кб, 228 просмотров)
Тип файла: zip MP_Ext_RunFix.zip (385.6 Кб, 224 просмотров)

Последний раз редактировалось ViNT, 16.03.2009 в 21:32.
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо ViNT за это полезное сообщение:
AssA (17.08.2011), odd (19.01.2009), Piligrim (10.01.2009), Rock2roll (14.05.2010), Skythrone (09.01.2009)
Старый 13.01.2009, 11:57   #7
oposum_2000
Оператор ЭВМ
 
Регистрация: 27.11.2006
Сообщений: 28
Написано одно полезное сообщение
Re: Расширение MP

Privet,

U menea vopros po libe Array2D ... vozmojnoli Dim(x,y) ne s type integer a custom type... ( ex : masiv:=Dim(10,20) of Hlimits; or masiv:=Dim(10,20,Hlimits); )


type Hlimits = record
x,y,dx,dy:integer;
end;


bolishoe spasibo,

oposum.
(Offline)
 
Ответить с цитированием
Старый 18.01.2009, 11:46   #8
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 84
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Расширение MP

Возможно ли с помощью какой либо функции определить, что пользователь Закрывает мидлет...
либо например в телефоне откл энергия... т.е. узнать принудительно ли закрывается программа?
(Offline)
 
Ответить с цитированием
Старый 18.01.2009, 21:15   #9
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: Расширение MP

пусть программка пишет что-нить в RMS в самом конце выключения, при включении проверяет и стирает эту запись. А что происходит выключение прога не узнает, есть только метод вызываемый при сворачивании программы
(Offline)
 
Ответить с цитированием
Старый 19.01.2009, 14:31   #10
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Расширение MP

С учетом возможности подмены стандартных классов, можно добавить обработку destroyApp и определять реакцию приложения на закрытие, аналогично можно поступить и с pauseApp.
(Offline)
 
Ответить с цитированием
Старый 19.01.2009, 14:49   #11
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Расширение MP

А есть ли у кого-нибудь каке-либо мысли по поводу самой программы?
Оду ошибку я уже нашел и пофиксил(добавлялись все классы из папки патча, а не только те, которые есть в архиве). Жду новых предложений и замечаний.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Rock2roll (14.05.2010)
Старый 19.01.2009, 15:58   #12
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Расширение MP

Спасибо на этом. Пока ничего больше не нужно.
(Offline)
 
Ответить с цитированием
Старый 19.01.2009, 16:34   #13
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Re: Расширение MP

Сообщение от oposum_2000 Посмотреть сообщение
Privet,
U menea vopros po libe Array2D ... vozmojnoli Dim(x,y) ne s type integer a custom type... ( ex : masiv:=Dim(10,20) of Hlimits; or masiv:=Dim(10,20,Hlimits); )
type Hlimits = record
x,y,dx,dy:integer;
end;
bolishoe spasibo,
oposum.
И да и нет. В либе можно хранить ТОЛЬКО int, но в твоём случае можно сделать маленькое исключение. При создании таблицы размер нужно брать в 4 раза больший, чем твоё количество Hlimits'ов, примерно так: Dim(1, 400); - для массива на 100 элементов. Для записи одного Hlimits в массив используем процедуру примерно такую:

Procedure Put_hl(xintegeryintegerdxintegerdyintegeraddrinteger);
begin
    PutInt
(1addr 4x); PutInt(1addr 1y);
    
PutInt(1addr 2dx); PutInt(1addr 3dy);
end
Для чтения процедура аналогичная (нужно будет только выше объявить временные переменные xx, yy, ddx, ddy типа integer):
Procedure Get_hl(addrinteger);
begin
    xx
:=GetInt(1addr 4); yy:=GetInt(1addr 1);
    
ddx:=GetInt(1addr 2); ddy:=GetInt(1addr 3);
end
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
oposum_2000 (20.01.2009)
Старый 20.01.2009, 13:43   #14
oposum_2000
Оператор ЭВМ
 
Регистрация: 27.11.2006
Сообщений: 28
Написано одно полезное сообщение
Re: Ответ: Re: Расширение MP

spasibo za cod dlea Array2D. jalko chto toliko int sohraneaiet.

krome hlimits u menea i drugie tipy dannyh i po slojnei. Nu eto vse bylo mojno sdelati v MP toliko nado bylo znati zaranne razmer dannyh. V Array2D etovo ne nujno .... razmer mojno staviti pri run-time. S pereadesatiei budet slojnovato esli text i boolean nado .... hmmm posmotrim .

eshe raz spasibo!
(Offline)
 
Ответить с цитированием
Старый 20.01.2009, 22:26   #15
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Расширение MP

Выкладываю подправленную версию программы.
Теперь в архиве обновляются только те классы, которые прописаны в конфигурации.
Для того, чтобы класс был заменен пропатченным, его нужно добавить в список в окне конфигурации.
Также можно выбрать использование классов из папки Patched в директории проекта или из стандартного набора (из папки программы).
Также добавил возможность выбора уровня компрессии ресурсов из папки Res2.
Программу обновил в том же сообщении.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширение файла impersonalis Полезные функции 19 28.02.2015 12:21
Расширение! pipns 2D-программирование 10 02.09.2007 16:06


Часовой пояс GMT +1, время: 03:10.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com