Главная
Регистрация
Вход
Авторизироваться
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ADMIN, Nextik  
Сохранение и чтение данных
NextikДата: Вторник, 31.01.2012, 18:43 | Сообщение # 1
Программист
Группа: Проверенные
Сообщений: 273
Награды: 0
Репутация: « 42 »
Статус: Offline
У меня возник вопрос, так как я никак не могу реализовать то что хочу: чтение из хранилища после перезапуска мидлета.
Вот собственно модифицированный код из справочника:
Code
Program Save_experiment;
{ --------------- Переменные --------------- }
var
rs:recordStore;
index:integer;
name:string;
{ --------------- Процедуры --------------- }
Procedure save; forward;
Procedure load; forward;
{ --------------- Менюшка --------------- }
Procedure drawing;
begin
// Выводим на экран
SetColor(0,0,0);
FillRect(0,0,240,320);
SetColor(255,255,255);
end;
Procedure menu;
var
exit:boolean;
s4et4ik:integer;
key_clicked:integer;
begin
exit:=false;
s4et4ik:=1;
repeat
key_clicked:=GetKeyClicked;
SetColor(0,0,0);
FillRect(0,0,GetWidth,GetHeight);
SetColor(255,255,255);
DrawText('Сохранить',0,0);
DrawText('Загрузить',0,12);
DrawText('Выйти',0,24);
////////////////////////
if (key_clicked=KE_KEY2) then begin s4et4ik:=s4et4ik-1 end;
if (key_clicked=KE_KEY8) then begin s4et4ik:=s4et4ik+1 end;
//
if (key_clicked=KE_KEY5) and (s4et4ik=1) then begin exit:=true; save; end;
if (key_clicked=KE_KEY5) and (s4et4ik=2) then begin exit:=true; load; end;
if (key_clicked=KE_KEY5) and (s4et4ik=3) then begin halt; end;
/////////////////////////
if (s4et4ik=1) then begin DrawText('<--',GetStringWidth('Сохранить'),0); end;
if (s4et4ik=2) then begin DrawText('<--',GetStringWidth('Загрузить'),12); end;
if (s4et4ik=3) then begin DrawText('<--',GetStringWidth('Выход'),24); end;
////////////////////////////////
repaint;
delay(1);
until exit=true;
end;
{ --------------- Загрузка/сохранение --------------- }
Procedure save;
begin
// Записываем некие данные в хранилище
deleterecordstore('names');
rs:=openRecordStore('names');
index:=addRecordStoreEntry(rs,'John Smith');
closeRecordStore(rs);
//
SetColor(0,0,0);
FillRect(0,0,GetWidth,GetHeight);
SetColor(255,255,255);
DrawText('Данные сохранены успешно!',0,0);
repaint;
delay(3000);
halt;
end;
Procedure load;
begin
// Считываем данные
rs:=openRecordStore('names');
name:=readRecordStoreEntry(rs,index);
closeRecordStore(rs);
//
SetColor(0,0,0);
FillRect(0,0,GetWidth,GetHeight);
SetColor(255,255,255);
DrawText('Данные загружены',0,0);
repaint;
delay(2000);
// Отображаем данные
SetColor(140,0,0);
FillRect(0,0,GetWidth,GetHeight);
SetColor(255,255,255);
DrawText(''+(name),0,0);
repaint;
delay(999999);
end;
{ --------------- Делаем тут всё --------------- }
begin
menu;
repeat
repaint;
delay(1);
until false;
end.  

Возможно я что-то делаю не так, тогда мне нужно научиться как работать с этим правильно. На процедуру drawing не обращайте внимания smile
 
12121Дата: Вторник, 31.01.2012, 20:31 | Сообщение # 2
Программист
Группа: Проверенные
Сообщений: 357
Награды: 4
Репутация: « 290 »
Статус: Offline
Привет неугомонный Nextik, biggrin
Не буду разбирать твой код, но на подобный вопрос я отвечал тут, посмотри в 10 сообщении.
У тебя скорее всего из за переменной index проблемы. Напечатай ее значения после сохранения - скорее всего будет index=1. А читать ты пытаешься из index=0. Так как после объявления она нигде не меняется.
Удачи! wink
 
NextikДата: Среда, 01.02.2012, 11:07 | Сообщение # 3
Программист
Группа: Проверенные
Сообщений: 273
Награды: 0
Репутация: « 42 »
Статус: Offline
Quote (12121)
У тебя скорее всего из за переменной index проблемы. Напечатай ее значения после сохранения - скорее всего будет index=1. А читать ты пытаешься из index=0. Так как после объявления она нигде не меняется.

Хм... И правда... Вот теперь я понял. Спасибо smile
 
Moderator_Дата: Пятница, 10.02.2012, 22:54 | Сообщение # 4
Группа: Удаленные





Доброго времени сток, господа.
Не копался долго на форуме, но сразу не нашел проблему сохранения в RecordStore русского текста.
Уже перепробовал много решений, но они либо не выгодные, либо мне не подходят.
Может кто поделится своим опытом?
Заранее спасибо! happy
 
NextikДата: Суббота, 11.02.2012, 12:24 | Сообщение # 5
Программист
Группа: Проверенные
Сообщений: 273
Награды: 0
Репутация: « 42 »
Статус: Offline
Я думаю все способы решения такой проблемы для тебе не подойдут...
 
PassCallДата: Вторник, 21.02.2012, 11:18 | Сообщение # 6
Знающий
Группа: Проверенные
Сообщений: 89
Награды: 0
Репутация: « 4 »
Статус: Offline
Если текст небольшой, можно записать не сам текст, а коды символов.

То есть вместо, скажем, "Абв" записать 343,457,253 (цифры произвольные)
 
  • Страница 1 из 1
  • 1
Поиск: