|
Основной форум Сюда все проблемы связанные с программированием. |
29.12.2008, 01:35
|
#1
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Расширение MP
У меня тут возникла интересная идея небольшого расширения MIDlet Pascal.
1. Короче, нужно написать программу, которая будет распаковывать JAR файл и добавлять туда всё содержимое папки res2 (вместе с подкаталогами) и запаковывать всё это назад. Сама программа должна вызываться как эмулятор, т.е. с помощью нажатия кнопки "Скомпилировать и запустить". А потом отлаживать полученную программу можно кнопкой "Запустить" (конечно, нужно перед этим будет поменять эмулятор).
2. Вторая идея. Программа практически аналогичная, но уже будет выполнять антиантивирусные функции, т.е. заменять классы S.class, FW.class, FS.class и др. на патченые.
Для программы вовсе не нужен интерфейс. Все параметры передаются через командную строку. Если исхитриться, можно такое написать даже с помощью BAT файла. Ну, что, есть тут мастера кодинга на других языках кроме MP? Или мне самому написать?
|
(Offline)
|
|
29.12.2008, 01:50
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Расширение MP
Могу натыкать на Delphi, можно без интерфейса, можно с окошком типа "скопировано то-то туда-то", как лучше. Под ZIP/UNZIP компонента есть.
------------------------
В общем-то, даже возиться с распаковкой\упаковкой не придется - у компоненты есть один интересный метод - можно натравить его на нужную папку, и он сам добавит все содержимое папки в архив вместе с подкаталогами.
Последний раз редактировалось ViNT, 29.12.2008 в 02:16.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
29.12.2008, 18:55
|
#3
|
ПроЭктировщик
Регистрация: 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)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.12.2008, 01:41
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Расширение MP
В общем, предлагаю такой вариант:
Пишем программу на Delphi которая:
-при запуске с параметром типа -jar project.jar выполняет с указанным файлом действия, предусмотренные конфигурацией, хранящейся в папке проекта(о конфигурации ниже); если присутствует параметр -run:true, проект запускается после модификации;
-при запуске с параметром -setup открывается окно конфигурации, в котором можно указать:
-копировать дополнительные ресурсы или нет;
-заменить ли классы мидлета пропатченными;
-какие параметры следует изменить/добавить в MANIFEST.MF и JAD;
-какую коммандную строку эмулятора использовать при запуске;
-возможно еще что-то, предлагайте.
Конфигурация будет сохраняться в INI-файле в папке проекта.
При установке программа будет создавать 3 конфигурации эмулятора:
-для модификации мидлета;
-для модификации и запуска мидлета;
-для изменения конфигурации;
(концы в реестре уже нашел, как добавлять эмуляторы разобрался)
Реализовать все это(качественно) смогу в течение нескольких дней.
Последний раз редактировалось ViNT, 30.12.2008 в 01:46.
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо ViNT за это полезное сообщение:
|
|
08.01.2009, 01:05
|
#5
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Расширение MP
Вопрос к автору идеи: нужно ли еще что-то добавить к предложенной концепции?
З.Ы. Программа в общем практически готова, осталось доделать модуль конфигурации и все проверить.
|
(Offline)
|
|
10.01.2009, 02:08
|
#6
|
Модератор
Регистрация: 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.
Обо всех найденных ошибках просьба сообщить.
Последний раз редактировалось ViNT, 17.03.2009 в 00:32.
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо ViNT за это полезное сообщение:
|
|
13.01.2009, 14:57
|
#7
|
Оператор ЭВМ
Регистрация: 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, 14:46
|
#8
|
Нуждающийся
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений (для 15 пользователей)
|
Ответ: Расширение MP
Возможно ли с помощью какой либо функции определить, что пользователь Закрывает мидлет...
либо например в телефоне откл энергия... т.е. узнать принудительно ли закрывается программа?
|
(Offline)
|
|
19.01.2009, 00:15
|
#9
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Расширение MP
пусть программка пишет что-нить в RMS в самом конце выключения, при включении проверяет и стирает эту запись. А что происходит выключение прога не узнает, есть только метод вызываемый при сворачивании программы
|
(Offline)
|
|
19.01.2009, 17:31
|
#10
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Расширение MP
С учетом возможности подмены стандартных классов, можно добавить обработку destroyApp и определять реакцию приложения на закрытие, аналогично можно поступить и с pauseApp.
|
(Offline)
|
|
19.01.2009, 17:49
|
#11
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Расширение MP
А есть ли у кого-нибудь каке-либо мысли по поводу самой программы?
Оду ошибку я уже нашел и пофиксил(добавлялись все классы из папки патча, а не только те, которые есть в архиве). Жду новых предложений и замечаний.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.01.2009, 18:58
|
#12
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Расширение MP
Спасибо на этом. Пока ничего больше не нужно.
|
(Offline)
|
|
19.01.2009, 19:34
|
#13
|
Мастер
Регистрация: 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(x: integer; y: integer; dx: integer; dy: integer; addr: integer); begin PutInt(1, addr * 4, x); PutInt(1, addr * 4 + 1, y); PutInt(1, addr * 4 + 2, dx); PutInt(1, addr * 4 + 3, dy); end;
Для чтения процедура аналогичная (нужно будет только выше объявить временные переменные xx, yy, ddx, ddy типа integer):
Procedure Get_hl(addr: integer); begin xx:=GetInt(1, addr * 4); yy:=GetInt(1, addr * 4 + 1); ddx:=GetInt(1, addr * 4 + 2); ddy:=GetInt(1, addr * 4 + 3); end;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.01.2009, 16:43
|
#14
|
Оператор ЭВМ
Регистрация: 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)
|
|
21.01.2009, 01:26
|
#15
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Расширение MP
Выкладываю подправленную версию программы.
Теперь в архиве обновляются только те классы, которые прописаны в конфигурации.
Для того, чтобы класс был заменен пропатченным, его нужно добавить в список в окне конфигурации.
Также можно выбрать использование классов из папки Patched в директории проекта или из стандартного набора (из папки программы).
Также добавил возможность выбора уровня компрессии ресурсов из папки Res2.
Программу обновил в том же сообщении.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Расширение файла |
impersonalis |
Полезные функции |
19 |
28.02.2015 15:21 |
Расширение! |
pipns |
2D-программирование |
10 |
02.09.2007 20:06 |
Часовой пояс GMT +4, время: 02:39.
|