MIDlet Pascal
Поиск по сайту
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Яндекс.Метрика

Друзья сайта
IT юмор - развлечения
Заработать в интернете - легко!Просто сиди и кликай.
Воскресенье, 15.07.2018, 20.11.32
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход
Урок №7 "Хранилище записей"
Урок №7 Здравствуйте.В этом уроке вы научитесь работать с Хранилищем записей.
Иногда в некоторых приложениях, ну просто необходимо сохранить какие-то данные, например таблицу рекордов, или в тамагочах время и т.д.

В компьютерных играх, когда игра хочет сохранить какую либо информацию, она её записывает у файл или реестр.В телефоне нет реестра, та и доступа к файловой системе иногда тоже нету.Для этих целей в телефоне предусмотрено память на флеш-карте, которая называется "Хранилище записей"(Record Store или просто RMS).

  На компьютере хранимая информация незащищено и другие программы имеют доступ к этим данным.На телефоне же, для каждого приложения отдельная область, и другие приложения не имеют к ней доступа и там можете хранить любую информацию.

  Вы уже знаете что каждое приложение имеет своё хранилище записей.В Хранилищи можно создавать разделы, например time(время последнего посещения) или level(текуще сохранённые уровень) и после закрытия приложения, эти данные будут храниться, пока вы их не измените или удалите в приложении.Для того что-бы открыть какой либо раздел Хранилища записей, нужно предварительно объявить переменную типа RecordStore и присвоить ей функцию OpenRecordStore(name).Вы наверное поняли сто вместо name можно написать хоть и VasjaPupkin))).Если при вызове данной функции вы ввели раздел которого нету, то он будет создан.Имя раздела должно состоять только из латинских букв в количестве максимум 32 символа.

  В каждом разделе хранятся записи ввиде текстовых строк.Каждая строка имеет свой номер.Это похоже на массив.Что-бы узнать количество хранимой информации, достаточно вызвать функцию GetRecordStore.Что-бы считать определённую запись, достаточно вызвать функцию ReadRecordStore(rs:RecordStore;i:integer):string где rs - переменная типа RecordStoreв которой был открыт раздел, i - номер строки.Если вы хотите добавить новую запись, то нужно воспользоваться функцией AddRecordStoreEntry(rs:recordstore;s:string):integer где s - строка которую нужно записать в раздел rs, функция возвращает индекс сохранённой строки.Функция GetRecordStoreNextId возвращает следующий незанятый номер записи, который будет использован в случае добавления записи функцией AddRecordStoreEntry.Для изменения записи необходимо воспользоваться процедурой ModifyRecordStoreEntry(rs:RecordStore;s:string;i:integer); где s - строка на которую нужно изменить, i - номер строки раздела rs.Ну а что-бы адлить раздел достаточно вызвать процедуру DeleteRecordStore(nme:string) где name - название раздела.

  Пример: Первая запись в хранилище всегда имеет номер 1. Вызов функции AddRecordStoreEntry добавит запись и присвоит ей номер 2. Следующей записи присвоится номер 3, и т.п. Если вы удалите запись под номером 1, и после этого добавите запись функцией AddRecordStoreEntry, новая запись будет сохранена под номером 4, а запись под номером 1 так и останется пустой (то есть, другими словами, дефрагментация записей в хранилище не делается). Вызов функции GetRecordStoreNextId вернет 5 (номер следующей незанятой записи), и GetRecordStoreSize вернет 3 (общее количество записей), потому что после удаления первой записи, в разделе осталось всего 3 из 4 записей.

  Давайте опробуем как это работает:

 
var rs       : RecordStore;
    countStr,s: string;
    countInt : integer;
    index    : integer;
    nextId   : integer;
begin
  rs := OpenRecordStore('Count'); //Открываем раздел "Count"
  nextId := GetRecordStoreNextId(rs);  //Смотрим какая строка следующая
  if nextId = 1 then //Если первая, то значит - это первый запуск программы
    index := AddRecordStoreEntry(rs, '0');// если это первый запуск, то создаём строку счётчика со значением "0"
  countStr := ReadRecordStoreEntry(rs, 1); //Считываем данные счётчика    
  countInt := StringToInteger(countStr) + 1; //Засчитываем запуск
  countStr := IntegerToString(countInt); //Записываем данные countInt в countStr
  ModifyRecordStoreEntry(rs, countStr, 1); //Изменяем значение записи
  ShowForm; //Выводим на экран с помощью формы
  begin //провери как писать "раз" или "раза"
    s:=Copy(countStr, length(countStr)-1,length(countStr));
    if (s='2') or (s='3') or (s='4') then s:='раза' 
      else s:='раз';
  end;
  index := FormAddString('Вы уже запускали эту программу ' + countStr + ' '+s);
  AddCommand(CreateCommand('Выход', CM_EXIT, 1));  
  repeat Delay(100) until GetClickedCommand <> EmptyCommand;
end.

Поздравляю, вы научились работать с Хранилищем файлов

← Урок №6Урок №8 →
Если вы нашли ошибки/очепятки в тексте то сообщите о них на форуме
А также можете заказать программу/игру на этой странице

www.parkflyer.ru - радиоуправляемые модели, радиоуправляемые модели самолетов, магазин радиоуправляемых моделей
Роспись стен, скульптуры на заказ
Wladymyr © 2012-2018
Создать бесплатный сайт с uCoz