forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_rms - Новые грани Хранилища Записей (http://forum.boolean.name/showthread.php?t=6310)

odd 31.08.2008 03:28

Lib_rms - Новые грани Хранилища Записей
 
Вложений: 2
Последнее обновление 05.10.2009
Краткий перечень новых возможностей:
  • Возможность читать/писать строки на русском языке
  • Возможность читать/писать картинки (с поддержкой прозрачности и альфаканалов)
  • Чтение списка разделов хранилища
  • Возможность доступа к хранилищу из других мидлетов

Можно будет, к примеру, в будущем замутить так:
Скины окон, шрифты и проч. устанавливается и записывается в специальное общее хранилище.
Приложение просто читает всё это из общего хранилища при работе.
Таким образом мидлет будет меньше весить. Как вам такая идейка?

Kurdt 31.08.2008 13:23

Re: Lib_rms - Новые грани Хранилища Записей
 
а если рмс не буде то и шрифтов небудет у второй программы?

Strelok 31.08.2008 16:23

Ответ: Lib_rms - Новые грани Хранилища Записей
 
odd, а можешь сделать функцию чтоб при удаление записи из хранилища автоматом происходила дефрагментация? было бы очень удобно

odd 01.09.2008 08:17

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от Strelok (Сообщение 85456)
odd, а можешь сделать функцию чтоб при удаление записи из хранилища автоматом происходила дефрагментация? было бы очень удобно

Ладно, я попробую такое замутить...

odd 01.09.2008 08:20

Ответ: Re: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от Kurdt (Сообщение 85450)
а если рмс не буде то и шрифтов небудет у второй программы?

Ну да. Зато если у тебя будет 2 или 3 программы с одним шрифтом, то соответственно будет экономия памяти. Хотя насчет экономии сильно сомнительно. Картинки в RMS пока хранятся в незапакованном виде, поэтому даже маленькая картинка 128х128 займет места 128*128*4 = 64 Кб :(

SoboLEFF 30.03.2009 19:19

Ответ: Lib_rms - Новые грани Хранилища Записей
 
походу в этой библиотеке не работают savestring и savepicture

так всё работает:

i:=AddString(rs, 'Всё сохранилось!');
s:=LoadString(rs, i);
DrawText(s, 5, 5);
i:=AddPicture(rs, LoadImage('/about.png'));
im:=LoadPicture(rs, i, 24, 24);
DrawImage(im, 50, 50);

а так нет:

SaveString(rs, 'Всё сохранилось!', 1);
s:=LoadString(rs, 1);
DrawText(s, 5, 5);
SavePicture(rs, LoadImage('/about.png'), 2);
im:=LoadPicture(rs, 2, 24, 24);
DrawImage(im, 50, 50);

просто выводится белый экран и всё, проверял на телефоне и на эмуляторах

Slezka 03.04.2009 17:36

Ответ: Lib_rms - Новые грани Хранилища Записей
 
А можешь сделать, что б не картинку сохроняло, а миди-очень нужно!!!!

odd 11.04.2009 02:24

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от Slezka (Сообщение 102713)
А можешь сделать, что б не картинку сохроняло, а миди-очень нужно!!!!

Всё это довольно странно. Можно конечно считать MIDI файл как строку текста и успешно сохранить его в RMS, но вот как потом плееру объяснить, что эту строку нужно воспроизводить?

odd 11.04.2009 02:27

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от SoboLEFF (Сообщение 102252)
походу в этой библиотеке не работают savestring и savepicture

так всё работает:

i:=AddString(rs, 'Всё сохранилось!');
s:=LoadString(rs, i);
DrawText(s, 5, 5);
i:=AddPicture(rs, LoadImage('/about.png'));
im:=LoadPicture(rs, i, 24, 24);
DrawImage(im, 50, 50);

а так нет:

SaveString(rs, 'Всё сохранилось!', 1);
s:=LoadString(rs, 1);
DrawText(s, 5, 5);
SavePicture(rs, LoadImage('/about.png'), 2);
im:=LoadPicture(rs, 2, 24, 24);
DrawImage(im, 50, 50);

просто выводится белый экран и всё, проверял на телефоне и на эмуляторах

Видимо, записи под номером 1 просто нет, вот и происходит зависание при попытке записи в несуществующий раздел.

SoboLEFF 11.04.2009 09:19

Ответ: Lib_rms - Новые грани Хранилища Записей
 
а как создать этот раздел?

odd 11.04.2009 22:31

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от SoboLEFF (Сообщение 103412)
а как создать этот раздел?

Да простым добавлением. Типа так:
PHP код:

i:=AddString(rs'#'); 

Перед записью чего-то в RMS можно в цикле позанимать энное количество записей таким оператором, а потом просто менять информацию на нужную. Это как при работе с обычным массивом. Пока ты не объявишь массив ты не можешь ничего туда записывать, а когда объявишь и заполнишь его хотя бы нулями, можно его использовать на всю катушку.

Olaola 29.04.2009 18:17

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от odd (Сообщение 103403)
Всё это довольно странно. Можно конечно считать MIDI файл как строку текста и успешно сохранить его в RMS, но вот как потом плееру объяснить, что эту строку нужно воспроизводить?

Строку загнать в InputStream, мне тоже очень нужна такая функция!!!
если сможешь сделай пожалуйста!!!

Olaola 29.04.2009 18:18

Ответ: Lib_rms - Новые грани Хранилища Записей
 
С InputSteam плеер будет работать..

GRAY_WOLF 29.09.2009 21:27

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Как узнать была ли запись в хранилише? В описании ни чего про это не сказано.

odd 05.10.2009 14:52

Ответ: Lib_rms - Новые грани Хранилища Записей
 
По предложению GRAY_WOLF добавил функцию проверки есть ли запись под данным номером (без опасности зависания программы).
Функция isNotEmty - возвращает 1 или 0. Таким образом, можно даже перебирать всё хранилище перебором.

Trazzy 06.10.2009 04:16

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Эм.. правильнее было бы isNotEmpty, а не isNotEmty вроде бы.. а за обновление - спасибо!:-)

odd 06.10.2009 13:05

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от ArtikZ (Сообщение 120735)
Эм.. правильнее было бы isNotEmpty, а не isNotEmty вроде бы.. а за обновление - спасибо!:-)

Немного описался в посте, в самой библиотеке без опечаток isNotEmpty.

Trazzy 06.10.2009 20:36

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Немного описался в посте, в самой библиотеке без опечаток isNotEmpty.
Бывает:)

VM 03.06.2010 13:15

Re: Lib_rms - Новые грани Хранилища Записей
 
RecordStore OpenSuite(name: string; vendor: string; suite: string) - Открыть Хранилище записей
name - Имя хранилища
vendor - Имя (название фирмы) владельца хранилища
suite - Название комплекта данных
Благодаря данной функции можно получить доступ к хранилищу записей другой программы.

Помогите разобраться с параметрами, желательно на примере. Не понятно, как обращаться к хранилищу другого мидлета.
В демо этого нет.

cHeRsAnYa 03.06.2010 23:56

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Чаще всего это невозможно. Для того, чтобы обращаться к чужому хранилищу, оно должно быть создано с явным разрешением доступа для посторонних, чего обычно не делается.

odd 04.06.2010 14:27

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Я тоже много пробовал, на деле ничего не получается. В чем проблема непонятно.
Пробовал и создавать хранилище с параметрами чтения/записи для всех других, но всё равно нет доступа из другого приложения.

cHeRsAnYa 05.06.2010 15:57

Ответ: Lib_rms - Новые грани Хранилища Записей
 
А на каком телефоне пробовал? Может быть производители просто не реализуют такой возможности, да и пользы немного от этого.

DIMMON4IK 05.06.2010 22:06

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от cHeRsAnYa (Сообщение 149095)
пользы немного от этого.

польза есть - перенос сохранения при смене телефона

cHeRsAnYa 05.06.2010 23:05

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Можно и при текущем положении дел переносить сохранения, есть даже специальные программы (например, SaveRecord - http://seclub.org/dn.php?d=5&t=1&q=7&r=3&c=24&fd=6560 ).

GRAY_WOLF 06.06.2010 20:18

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от odd (Сообщение 148988)
Я тоже много пробовал, на деле ничего не получается. В чем проблема непонятно.

А проблема в том, что телефон не сможет найти это хранилище.
Допустим я создаю в мидлете хранилише "meteo".
KEmulator создает на компе имя хранилиша meteo_1.rms и к нему можно будет обращаться из любого мидлета (если запуск будет происходить на том же эмуляторе, то он найдет это хранилище) указав имя хранилиша "meteo". Будет все нормально.
В телефоне же все обстоит по другому JVM телефона (например N7390)создает хранилище такого типа - Meteo_M_SE_240x320_m_meteo.rms т.е. дописывается имя программы из которой создается это хранилище и еще что то... Вот и вам ответ.

cHeRsAnYa 06.06.2010 20:52

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Так называется файл, а само хранилище может иметь и другое имя.

odd 06.06.2010 22:18

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Короче, во всех телефонах RMS реализуется по-разному.
На Siemens, к примеру, на основании названия и имени поставщика программы по замороченному алгоритму генерируется некий номер. Затем создается папка, которая имеет имя равное этому номеру. Соответственно все хранилища потом записываются в эту папку. Таким образом, чтобы другая программа могла обратиться к данному хранилищу, у неё и название и автор должны совпадать. Только вот иметь на телефоне 2 программы с одинаковыми названиями запрещено.

cherepets 07.06.2010 13:22

Ответ: Lib_rms - Новые грани Хранилища Записей
 
на симбиан 6-8 также было

Igor 07.06.2010 13:59

Ответ: Lib_rms - Новые грани Хранилища Записей
 
На нокиа 5200 создавались файлики в папке с игрой.

im_zorg 07.06.2010 15:44

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Нокиа 3110с создаются в папке с мидлетом такой бардак ппц...

NetBuilding 04.08.2010 17:37

Ответ: Lib_rms - Новые грани Хранилища Записей
 
почему-то не kemulator'е демка не отображается т.е. белый экран кажет просто, а на Sjboy все нормально рубит?

GRAY_WOLF 04.08.2010 18:27

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от NetBuilding (Сообщение 157266)
почему-то не kemulator'е демка не отображается т.е. белый экран кажет просто, а на Sjboy все нормально рубит?

Не знаю что у тебя за проблема такая? Я к примеру скачивал из интернета целую страницу и ее сохранял в хранилищи, а только потом ее читал и парсил. При этом в эмуляторе все отображалось нормально.
Ps: (пишу с тела пример выложить не могу).

NetBuilding 17.08.2010 18:22

Ответ: Lib_rms - Новые грани Хранилища Записей
 
вот никак немогу разобраться позволяет ли сея либа сохранить данные и выдать их при последующем запуске приложения.
т.е. изменил я какие нибудь значения в приложении записал в хранилище, закрыл мидлет.
открываю мидлет заново, значения почлись из хранилища, и отобразились.

вот уже бошкой об стену бьюсь немогу понять.
то оно вроде работает. а-то нет.

вот как делаю:
PHP код:

запускаем приложение

rs
:=OpenRecordStore('vodolaz');    // Открываем хранилище
zapis:=isNotEmpty(rs,1);
if 
zapis=1 then begin
  fpswiev
:=stringToInteger(LoadString(rs1)); // Читаем ображатель скорости
  
fps:=stringToInteger(LoadString(rs2)); // Читаем скорость
  
end;
  else 
begin
  fpswiev
:=50;
  
fps:=50;
  
end;

а вот изменяю значения:

 if  
KeyToAction(keyCode) = GA_fire then begin i:=1deleteRecordStoreEntry(rsi);   i:=AddString(rsintegerToString(fpswiev)); i:=2deleteRecordStoreEntry(rsi); i:=AddString(rsintegerToString(fps)); menuend;
    if  
KeyToAction(keyCode) = GA_left then begin fps:=fps+5fpswiev:=fpswiev-5;   end;
    if  
KeyToAction(keyCode) = GA_right then begin fps:=fps-5fpswiev:=fpswiev+5;  end


GRAY_WOLF 17.08.2010 19:13

Внимательно проти всю тему и манул к либе. При запуске программы можно сделать проверку на запись в хранилище если там ни чего нет (первый запуск программы) то в хранилище можно записать какие то данные напимер „0”, а потом эти данные модифицируем и при следующем запуске считываем и присваеваем тем переменным которым они предназначены...

Dj_Alex 04.11.2010 00:12

Ответ: Lib_rms - Новые грани Хранилища Записей
 
а какое максимальное разрешение сохраняемого изображения?

odd 04.11.2010 14:56

Ответ: Lib_rms - Новые грани Хранилища Записей
 
В большинстве телефонов размеры RMS ограничены 300 килобайтами. Так что считаем 300 кб = 76800 точек. Ну, а дальше смотри какие размеры имеет твоя картинка (умножь высоту на ширину) и желательно чтобы полученное число не превышало 76800.

cherepets 04.11.2010 16:22

Ответ: Lib_rms - Новые грани Хранилища Записей
 
всего 1 скрин можно сохранить? не густо + я вроде больше сохранял

GRAY_WOLF 04.11.2010 16:25

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от odd (Сообщение 167035)
В большинстве телефонов размеры RMS ограничены 300 килобайтами. Так что считаем 300 кб = 76800 точек. Ну, а дальше смотри какие размеры имеет твоя картинка (умножь высоту на ширину) и желательно чтобы полученное число не превышало 76800.

Еще надо *4, т.е. ширину * высоту * 4 = именно столько байт занимает картинка в памяти...

odd 04.11.2010 16:43

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от GRAY_WOLF (Сообщение 167045)
Еще надо *4, т.е. ширину * высоту * 4 = именно столько байт занимает картинка в памяти...

Не, на 4 умножать не надо. 76800 это величина в ТОЧКАХ, а не байтах.

odd 04.11.2010 16:45

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от cherepets (Сообщение 167044)
всего 1 скрин можно сохранить? не густо + я вроде больше сохранял

Можно. Скрин 240*320 = 76800 как раз в обрез. Должно работать на любых телефонах.

adenaden 28.05.2011 06:47

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Цитата:

Сообщение от Strelok (Сообщение 85456)
odd, а можешь сделать функцию чтоб при удаление записи из хранилища автоматом происходила дефрагментация? было бы очень удобно

Тоже очень жду этой возможности, а то как сейчас совершенно неудобно..но похоже забросили и придется самому разбираться(а для меня это как минимум пару суток непрерывно, т.к. не знаю java совершенно) и дописывать ( ... но чего не сделаешь, для упрощения реализации своих разработок )

Вообще либа очень нужная, в основном из за реализации правильной кирилицы, спасибо !

nil0q 20.06.2012 19:16

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Если я правильно понимаю, в RMS можно сохранять только строки и тексты, а как хранить числовые массивы?
У меня в приложении массив - несколько тыщ дробных чисел. Не писать же их в строки, чтоб потом грузить в srtingtoreal. Есть какой-нибудь цивилизованный способ хранения массивов?

Fred-boy 14.03.2013 16:58

Ответ: Lib_rms - Новые грани Хранилища Записей
 
Для работы с RMS обязательна эта библиотека?


Часовой пояс GMT +4, время: 01:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot