![]() |
Принудительный выход
Как принудительно выйти из процедуры. Нужна реализация типа паскалевского exit.
|
Re: Принудительный выход
из процедуры вроде break
а из мидлета вообще - halt |
Re: Принудительный выход
break не совсем из процедуры, из текущего оператора.
|
Re: Принудительный выход
Кстати, сделал в одной проге выход по хальту, а она сцуко каждый раз по новой ресурсы распаковывает.
Нашел папку с её сейвами, а там куча одинаковых файлов со случайными именами. При том, что у меня там из ресурсов одна вавка на 70 с лишним килов, память съедается весьма успешно. Так что имхо лучше по человечески выходить. |
Re: Принудительный выход
Цитата:
HALT, насколько помню команда экстренного выхода. так что или не юзайте, или допишите процедуру очистки от мусора, которая выполняется при следующем после внештаного завершения запуске. |
Re: Принудительный выход
break - это оператор выхода из цикла. Если в процедуре только один цикл (что врядли), то этого хватит. В противном же случае придется вводить дополнительную флаговую переменную, в кот. будет хранится скажем true - надо выходить, false - не надо пока, и перед началом каждого цикла или блока операторов проверять эту переменную.
Кстати, RecordStore - очень любопытная вещь. Мало того, что она на разных телах реализуется немножко по-разному, так ещё и хитрозадые программеры каким-то макаром сохраняют туда не только строки текста, но и мелодии и картинки. |
Re: Принудительный выход
Про RecordStore: туда можно сохранить практически все. Ведь мелодия и картинка это тоже байтовый массив если разобраться.
|
Re: Принудительный выход
Цитата:
На основе кода на MP Код:
program x; Код:
|
Re: Принудительный выход
If true when this method is called, the MIDlet must cleanup and release all resources
Тоесть программа обязана убрать за собой перед завершением. |
Re: Принудительный выход
Цитата:
1. На основании тела программы/игры генерится числовое название папки, например 12345. 2. Папка размещается в системной папке Data:/System/java (папка скрытая) 3. В этой папке генерится файл RMS_RC.db, в котором хранятся названия разделов RecordStore и ссылки на файлы типа [email protected], [email protected] и т.п. в кот. и хрянятся ресурсы. Надо будет декомпильнуть пару тройку программ и посмотреть как они это делают. В идеале это даёт неплохой выигрыш по скорости при загрузке графики/мелодий, ведь в RecordStore они хранятся в незапакованном виде. Но для пользователей гимор - если удалить прогу, её RecordStore может остаться и засорять память телефона. |
Re: Принудительный выход
Помоему все это делается на уровне виртуальной машины или сразу при установке приложения.
|
Re: Принудительный выход
|
Re: Принудительный выход
если прога удаляется средствами системы телефона (а не всякими утилитами доступа к "диску" мобилки), то вместе с нею удаляются и файлы RS. А создаются они самой программой, файлы в системной папке - когда мы пишем в RecordStore - фактически пишем в те самые файлы... Система организует записи в виде базы данных - файл-индекс и файлы-таблицы записей, потому их всегда минимум 2...
Очень рекомендую при работе с RS при считывании контролировать целостность данных и сразу исправлять (т.е. перезаписывать значениями по дефолту), если они там некорректны... А то вот у программы ClimateControl это было не сделано, в результате однажды, когда связь с инетом была плохая, я ее вырубил принудительно, и в RS остались какие-то левые записи, после чего прога грузиться не захотела... Пришлось переустанавливать... |
Re: Принудительный выход
odd, это специфика хранения данных на семенах, не стоит их переносить на всех производителей.
ЗЫ: по-моему мы слегка ушли от темы :) |
Ответ: Принудительный выход
Ой наоффтопили.
Ну хотя бы goto кто-нибудь знает? :''(( |
Ответ: Принудительный выход
Цитата:
|
Ответ: Принудительный выход
Цитата:
|
Ответ: Принудительный выход
А че, в MP разве есть goto?
|
Ответ: Принудительный выход
Так я и ищу замену.
Вообщем есть не малого объёма процедура, которую я решил перегнать из delphi в MP. В процедуре внутри всяких for,while, if... используется exit. Не знаю что делать. |
Ответ: Принудительный выход
хм, интересная задачка. В яве можно return вызвать в любом месте процедуры, а в МР об этом похоже забыли.
|
Ответ: Принудительный выход
Это я к тому шо GoTo лажа
|
Ответ: Принудительный выход
Используй break. Ну а если там большая вложенность циклов, то придется добавлять целую цепочку условных break'ов.
|
Ответ: Принудительный выход
Кстати, на счёт return, давно хотел спросить. Если я в Java вызову ретун в середине процедуры, то ошибки не возникнет? Ретун просто возратит значение и завершит выполнение процедуры? Просто иногда бывает удобно, например, в цикле при получении нужного значения просто возратить ретун и всё. Иначе же придётся выйти из цикла, после этого вызвать ретун, но возможно, что после цикла ещё идёт код, который должен выполняться только если в цикле не нашлось требуемое значение. Надеюсь, меня поняли =)
|
Ответ: Принудительный выход
В Java return можно вызывать из любого места. Там такого головняка как в MP нет.
|
Ответ: Принудительный выход
А jar ведь можно декомпилировать, и вставить в нужных местах return. Так? Если да то скажите как это сделать.
З.Ы. С явой не работал, вопрос может глупый. |
Ответ: Принудительный выход
![]() |
Ответ: Принудительный выход
jimon, :-D . Но я не хочу переписывать процедуру из 174 строчек, которую я написал пол года назад и почти ничего в ней не понимаю, пусть лучше меня динозавр покусает :wallbash:
Так если кто знает про декомпиляцию напишите плизз. |
Ответ: Принудительный выход
Цитата:
Большие участки кода на MP декомпилируются с ошибками. :wallbash: |
Часовой пояс GMT +4, время: 08:15. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot