forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Чтение из хранилища (http://forum.boolean.name/showthread.php?t=7299)

Rosetau 09.11.2008 16:58

Чтение из хранилища
 
всем привет, подскажите плз

есть процедура основной программы, где в бесконечном цикле крутятся ифы

примерно так

Код:

repeat
if ptext=0 then
begin end;

if ptext=1 then
begin end;
until(..);

и в каждом ифе присутствует запись в хранилище, например, для второго ифа
Код:

if key=KE_KEY0 then
begin
rs := openRecordStore('saves');
index := addRecordStoreEntry(rs, '1');
closeRecordStore(rs);
delay(500);
halt;
end;

а потом при старте мидлета в меню имею функцию загрузки
Код:

if menuClicked = loadButton then
begin
rs := openRecordStore('saves');
save1 := readRecordStoreEntry(rs, index);
loadsave:=stringtointeger(save1); //перевожу строку в интегер
closeRecordStore(rs);

ptext:=loadsave;//присваиваю считанное значение птексту
main_game;//запускаю главную процедуру
end;

по идее, в указателе ифа ptext'е сразу должно находится считанное значеине и начинаться второй иф. но начинается всегда первый

в чем я ошибаюсь?

Dr.SanX 09.11.2008 20:25

Ответ: Чтение из хранилища
 
Мож поможет, хоть чуть ))
Код:

program Rosetau;
var xxx,key,index,ptext:integer;
    rs:recordStore;
procedure main_menu;
begin
        drawText('Hello world!', 0, 0);
        repaint;       
        delay(2000);
end;
begin
repeat
rs:=openRecordStore('Text');//Открытие RecordStore
ptext:=stringToInteger(readRecordStoreEntry(rs,1));//Загрузка 1-й строки с переводом в integer
if ptext=0 then
begin
key:=getKeyClicked;//Чтение клавиатуры
    if key=KE_KEY0 then//Проверка нажатия
    begin
    rs:=openRecordStore('Text');//Открытие RecordStore
    if getRecordStoreSize(rs)=0 then index:=addRecordStoreEntry(rs,'1');//Проверка на наличее строк в RS и если нет записывает
    end;
end;
if ptext=1 then begin
main_menu;//Загрузка нужной процедуры
ptext:=2//Чтоб зацикливания небыло
end;
until(xxx=1);
end.


Rosetau 09.11.2008 20:30

Ответ: Чтение из хранилища
 
Цитата:

if getRecordStoreSize(rs)=0 then index:=addRecordStoreEntry(rs,'1');//Проверка на наличее строк в RS и если нет записывает
а если например запись была уже произведена и я сохраняюсь второй раз? мне в принципе неважно, можно ее и перезаписывать, но при такой проверке получается что запись будет сделала тока 1 раз, потому что в остальные разы хранилище будет не пустым?

или при чтении он удаляет запись с хранилища?

Dr.SanX 09.11.2008 20:44

Ответ: Чтение из хранилища
 
ModifyRecordStoreEntry(rs,'XXX',1);{хранилеще,текс т,номер строки для замены}//если строка 1 уже существует в хранилеще

Rosetau 09.11.2008 21:13

Ответ: Чтение из хранилища
 
Dr.SanX, угу пасиба большое
сделал в лоб - после загрузки удаляю хранилище. хотя с точки зрения затраты ресурсов это не очень хорошо наверно


Часовой пояс GMT +4, время: 17:53.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot