|
31.01.2012 в 18:43
Сообщение #1
|
|
Nextik
Программист
Проверенные
Сообщений: 273
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 не обращайте внимания
|
|
|
|
|
31.01.2012 в 20:31
Сообщение #2
|
|
12121
Программист
Проверенные
Сообщений: 357
Offline
|
Привет неугомонный Nextik, Не буду разбирать твой код, но на подобный вопрос я отвечал тут, посмотри в 10 сообщении. У тебя скорее всего из за переменной index проблемы. Напечатай ее значения после сохранения - скорее всего будет index=1. А читать ты пытаешься из index=0. Так как после объявления она нигде не меняется. Удачи!
|
|
|
|
|
01.02.2012 в 11:07
Сообщение #3
|
|
Nextik
Программист
Проверенные
Сообщений: 273
Offline
|
Quote (12121) У тебя скорее всего из за переменной index проблемы. Напечатай ее значения после сохранения - скорее всего будет index=1. А читать ты пытаешься из index=0. Так как после объявления она нигде не меняется. Хм... И правда... Вот теперь я понял. Спасибо
|
|
|
|
|
10.02.2012 в 22:54
Сообщение #4
|
|
Moderator_
Удаленные
|
Доброго времени сток, господа. Не копался долго на форуме, но сразу не нашел проблему сохранения в RecordStore русского текста. Уже перепробовал много решений, но они либо не выгодные, либо мне не подходят. Может кто поделится своим опытом? Заранее спасибо!
|
|
|
|
|
11.02.2012 в 12:24
Сообщение #5
|
|
Nextik
Программист
Проверенные
Сообщений: 273
Offline
|
Я думаю все способы решения такой проблемы для тебе не подойдут...
|
|
|
|
|
21.02.2012 в 11:18
Сообщение #6
|
|
PassCall
Знающий
Проверенные
Сообщений: 88
Offline
|
Если текст небольшой, можно записать не сам текст, а коды символов.
То есть вместо, скажем, "Абв" записать 343,457,253 (цифры произвольные)
|
|
|
|