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 не обращайте внимания
|
|
| |
12121 | Дата: Вторник, 31.01.2012, 20:31 | Сообщение # 2 |
Программист
Группа: Проверенные
Сообщений: 357
| Привет неугомонный Nextik, Не буду разбирать твой код, но на подобный вопрос я отвечал тут, посмотри в 10 сообщении. У тебя скорее всего из за переменной index проблемы. Напечатай ее значения после сохранения - скорее всего будет index=1. А читать ты пытаешься из index=0. Так как после объявления она нигде не меняется. Удачи!
|
|
| |
Nextik | Дата: Среда, 01.02.2012, 11:07 | Сообщение # 3 |
Программист
Группа: Проверенные
Сообщений: 273
Награды: 0
Репутация:
« 42 »
Статус: Offline
| Quote (12121) У тебя скорее всего из за переменной index проблемы. Напечатай ее значения после сохранения - скорее всего будет index=1. А читать ты пытаешься из index=0. Так как после объявления она нигде не меняется. Хм... И правда... Вот теперь я понял. Спасибо
|
|
| |
Moderator_ | Дата: Пятница, 10.02.2012, 22:54 | Сообщение # 4 |
Группа: Удаленные
| Доброго времени сток, господа. Не копался долго на форуме, но сразу не нашел проблему сохранения в RecordStore русского текста. Уже перепробовал много решений, но они либо не выгодные, либо мне не подходят. Может кто поделится своим опытом? Заранее спасибо!
|
|
| |
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 (цифры произвольные)
|
|
| |