Добро пожаловать на MidletPascal - а теперь еще скоро и Android и Iphone...
Авторизироваться
Меню сайта
Категории раздела
Для начинающих [16]
С этих статей вырасли все, кто сейчас программирует на MP. Именно с этих статей надо начинать новичку, качество у них не всегда хорошее, но почитать стоит.
Разбираем.Обьясняем [1]
В этой категории обьясняем, разьясняем библиотеки,примеры,мидлеты и т.д.
Прочее [4]
Прочее, что не касается программирования: как настроить MP, что нужно для работы и др...
Наш опрос
Вы программируете на MP?
Всего ответов: 617
Мини-чат
200
Статистика

Онлайн : 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Midlet Pascal » Для начинающих

Сохранение данных в телефон и их чтение...

Очень часто приложениям приходится сохранять какие-то данные в телефон. На компьютере эти данные сохраняются в файлы которые хранятся на жестком диске. Мобильные телефоны не имеют дисков, поэтому ява приложениям приходится искать альтернативные методы сохранения данных. J2ME дает доступ к данным флеш памяти через интерфейс называемый -хранилище данных (record store).

Важно заметить одну важную деталь: компьютерная файловая система одинаково доступна для всех приложений, одно приложение может создать файл, а другое получить к нему доступ. На мобильных телефонах каждое приложение имеют своё хранилище данных, которое изолировано от других. Другими словами, доступ к данным имеют только приложение их создавшее.
Хранилища данных идентифицируются по имени. Для открытия хранилища нужно пользоваться функцией OpenRecordStore. Этой функции передается имя хранилища, а она возвращает обьект типа RecordStore. Если хранилище с таким именем отсутствует, то создается новое.После завершения работы с хранилищем оно должно быть закрыто с помощью функции CloseRecordStore. Хранилище может быть удалено с помощью функции DeleteRecordStore
Каждое хранилище данных содержит текстовые строки идентифицируемые по их индексу. Это очень отличается от обычных файлов которые содержат raw данные. Вы можете получать количество записей с помощью функции GetRecordStoreSize. Функции ReadRecordStoreEntry передается два аргумента: обьект типа RecordStore, и индекс элемента. Функция вернет текстовую строку сохранённую в хранилище под соответствующем индексом.
Новый элемент может быть добавлен в хранилище с помощью функции AddRecordStoreEntry, которая возвращает индекс сохраненного элемента в хранилище. Функция GetRecordStoreNextId возвращает индекс который будет дан следующему элементу сохраненному с помощью функции AddRecordStoreEntry. Данные записи в хранилище могут быть отредактированы с помощью функции ModifyRecordStoreEntry. И наконец элемент может быть удален с помощью функции DeleteRecordStoreEntry.
Индекс первого элемента сохраненного в хранилище равен 1. При следующем вызове AddRecordStoreEntry будет добавлен элемент с индексом 2. Следующий вызов добавит элемент с индексом 3. Если вы удалите элемент с индексом 1, и после этого вы вызовете функцию AddRecordStoreEntry, новый элемент будет иметь индекс 4, но при этом элемент с индексом 1 будет пуст. Если вы вызовите функцию GetRecordStoreNextId, она вернет значение 5, а функция GetRecordStoreSize вернет 3.
Приведем пример с использованием этих функций:

program record_store; 
  var rs : recordStore;
  countStr : string;
  countInt : integer; 
  index : integer; 
  nextId :integer;
  begin 
  rs := OpenRecordStore("Count"); 
   
  nextId := GetRecordStoreNextId(rs);  
   
  // если программа запущена впервые добавим элемент в  
  // хранилище данных 
  if nextId = 1 then 
  index := AddRecordStoreEntry(rs, "0"); //добавим элемент
   
  // прочитаем элемент
  countStr := ReadRecordStoreEntry(rs, 1);  
   
  // увеличим на единицу
  countInt := StringToInteger(countStr) + 1;  
  countStr := IntegerToString(countInt); 
   
  // сохраним увеличенное на единицу значение 
  ModifyRecordStoreEntry(rs, countStr, 1);
   
  // закроем хранилище данных
  CloseRecordStore(rs); 
   
  // отобразим элемент
  ShowForm;
  index := FormAddString("Число запусков: " + countStr); 
   
  AddCommand(CreateCommand("Exit", CM_EXIT, 1));  
  repeat Delay(100) until GetClickedCommand <> EmptyCommand; 
   
  end. 


статья взята с http://aleksphone.narod.ru

Категория: Для начинающих | Добавил: admin (08.01.2009)
Просмотров: 2741 | Рейтинг: 4.5/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]