|
Основной форум Сюда все проблемы связанные с программированием. |
25.10.2007, 10:46
|
#1
|
Оператор ЭВМ
Регистрация: 24.09.2007
Сообщений: 36
Написано 2 полезных сообщений (для 3 пользователей)
|
Принудительный выход
Как принудительно выйти из процедуры. Нужна реализация типа паскалевского exit.
|
(Offline)
|
|
25.10.2007, 14:14
|
#2
|
Нуждающийся
Регистрация: 24.05.2006
Сообщений: 64
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Принудительный выход
из процедуры вроде break
а из мидлета вообще - halt
|
(Offline)
|
|
25.10.2007, 14:32
|
#3
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Re: Принудительный выход
break не совсем из процедуры, из текущего оператора.
|
(Offline)
|
|
26.10.2007, 01:28
|
#4
|
ПроЭктировщик
Регистрация: 13.11.2006
Сообщений: 101
Написано 6 полезных сообщений (для 6 пользователей)
|
Re: Принудительный выход
Кстати, сделал в одной проге выход по хальту, а она сцуко каждый раз по новой ресурсы распаковывает.
Нашел папку с её сейвами, а там куча одинаковых файлов со случайными именами.
При том, что у меня там из ресурсов одна вавка на 70 с лишним килов, память съедается весьма успешно.
Так что имхо лучше по человечески выходить.
|
(Offline)
|
|
26.10.2007, 02:24
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Принудительный выход
Сообщение от EVIL_USER
Кстати, сделал в одной проге выход по хальту, а она сцуко каждый раз по новой ресурсы распаковывает.
Нашел папку с её сейвами, а там куча одинаковых файлов со случайными именами.
При том, что у меня там из ресурсов одна вавка на 70 с лишним килов, память съедается весьма успешно.
Так что имхо лучше по человечески выходить.
|
Не прогаю MidletPascal - чисто алгоритмические умозаключения:
HALT, насколько помню команда экстренного выхода. так что или не юзайте, или допишите процедуру очистки от мусора, которая выполняется при следующем после внештаного завершения запуске.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
26.10.2007, 08:53
|
#6
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: Принудительный выход
break - это оператор выхода из цикла. Если в процедуре только один цикл (что врядли), то этого хватит. В противном же случае придется вводить дополнительную флаговую переменную, в кот. будет хранится скажем true - надо выходить, false - не надо пока, и перед началом каждого цикла или блока операторов проверять эту переменную.
Кстати, RecordStore - очень любопытная вещь. Мало того, что она на разных телах реализуется немножко по-разному, так ещё и хитрозадые программеры каким-то макаром сохраняют туда не только строки текста, но и мелодии и картинки.
|
(Offline)
|
|
26.10.2007, 12:22
|
#7
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Re: Принудительный выход
Про RecordStore: туда можно сохранить практически все. Ведь мелодия и картинка это тоже байтовый массив если разобраться.
|
(Offline)
|
|
26.10.2007, 14:56
|
#8
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Принудительный выход
Сообщение от impersonalis
Не прогаю MidletPascal - чисто алгоритмические умозаключения:
HALT, насколько помню команда экстренного выхода. так что или не юзайте, или допишите процедуру очистки от мусора, которая выполняется при следующем после внештаного завершения запуске.
|
Выход по halt абсолютно ничем не отличается от простого завершения программы(после последнего оперетора):
На основе кода на MP
program x;
begin
drawimage(loadimage(''),0,0);
halt;
end.
Генерится код на java:
G.drawImage(Image.createImage(""), 0, 0, 20);//drawimage
FW.fw.destroyApp(true);//halt
Thread.currentThread().join();
Thread.sleep(1000);
FW.fw.destroyApp(true);//Завершение после
//последнего оперетора
}
Как видно, между выделенными строками разницы нет, так что halt аналогичен простому завершению.
|
(Offline)
|
|
27.10.2007, 01:03
|
#9
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Re: Принудительный выход
If true when this method is called, the MIDlet must cleanup and release all resources
Тоесть программа обязана убрать за собой перед завершением.
|
(Offline)
|
|
27.10.2007, 09:13
|
#10
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Re: Принудительный выход
Сообщение от pilgrim
Про RecordStore: туда можно сохранить практически все. Ведь мелодия и картинка это тоже байтовый массив если разобраться.
|
Так если бы в самом RS всё хранилось - нет ничего удивительного, а то прям рядом с файлом ресурсов лежит файл скажем .wav или .mid. Например, как в Семёнах:
1. На основании тела программы/игры генерится числовое название папки, например 12345.
2. Папка размещается в системной папке Data:/System/java (папка скрытая)
3. В этой папке генерится файл RMS_RC.db, в котором хранятся названия разделов RecordStore и ссылки на файлы типа [email protected], [email protected] и т.п. в кот. и хрянятся ресурсы.
Надо будет декомпильнуть пару тройку программ и посмотреть как они это делают. В идеале это даёт неплохой выигрыш по скорости при загрузке графики/мелодий, ведь в RecordStore они хранятся в незапакованном виде. Но для пользователей гимор - если удалить прогу, её RecordStore может остаться и засорять память телефона.
|
(Offline)
|
|
27.10.2007, 13:47
|
#11
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Re: Принудительный выход
Помоему все это делается на уровне виртуальной машины или сразу при установке приложения.
|
(Offline)
|
|
27.10.2007, 15:00
|
#12
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Принудительный выход
odd не пугай меня - любителя всевозможных утилит на трубке
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
27.10.2007, 15:28
|
#13
|
ПроЭктировщик
Регистрация: 25.12.2006
Сообщений: 163
Написано 7 полезных сообщений (для 12 пользователей)
|
Re: Принудительный выход
если прога удаляется средствами системы телефона (а не всякими утилитами доступа к "диску" мобилки), то вместе с нею удаляются и файлы RS. А создаются они самой программой, файлы в системной папке - когда мы пишем в RecordStore - фактически пишем в те самые файлы... Система организует записи в виде базы данных - файл-индекс и файлы-таблицы записей, потому их всегда минимум 2...
Очень рекомендую при работе с RS при считывании контролировать целостность данных и сразу исправлять (т.е. перезаписывать значениями по дефолту), если они там некорректны... А то вот у программы ClimateControl это было не сделано, в результате однажды, когда связь с инетом была плохая, я ее вырубил принудительно, и в RS остались какие-то левые записи, после чего прога грузиться не захотела... Пришлось переустанавливать...
|
(Offline)
|
|
29.10.2007, 00:04
|
#14
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Re: Принудительный выход
odd, это специфика хранения данных на семенах, не стоит их переносить на всех производителей.
ЗЫ: по-моему мы слегка ушли от темы
|
(Offline)
|
|
30.08.2008, 21:50
|
#15
|
Оператор ЭВМ
Регистрация: 30.08.2008
Сообщений: 22
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Принудительный выход
Ой наоффтопили.
Ну хотя бы goto кто-нибудь знает?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:38.
|