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=465)

gunner05 25.07.2007 16:54

Re: Как сохранить в файл?
 
а у меня вот не сохраняються
вот набрасал код
запись и чтение из хранилища...пока java запущено читает, если закрыть и запустить то пусто....

program sender_w;
procedure CreateMenu;forward;
var rs: recordStore;
ok, cancel, clicked: command;
index, phone: integer;
name, phone2: string;
_write,_read,_exit:integer; //для меню

procedure write;
begin
clearForm;
showform;
ok:=createCommand('Сохранить',CM_SCREEN,0);
cancel:=createCommand('Назад',CM_SCREEN,1);
addcommand(ok);
addcommand(cancel);
phone:= formAddTextField('номер', '', 15, TF_NUMERIC);

repeat
delay(100);
clicked := getClickedCommand;
until clicked <> emptyCommand;

if clicked = cancel then CreateMenu;

phone2:= formGetText(phone);

rs := openRecordStore('phone');
index := addRecordStoreEntry(rs, phone2);
closeRecordStore(rs);
CreateMenu;
end;
procedure read;
begin
rs := openRecordStore('phone');
name := readRecordStoreEntry(rs, index);
closeRecordStore(rs);

showCanvas;
setColor(255, 0, 0);
drawText(name, 5, 5);
repaint;
delay(3000);
CreateMenu;

end;

procedure CreateMenu;
begin
ShowMenu('Меню', CH_IMPLICIT);
_write := MenuAppendString('Записать');
_read := MenuAppendString('Прочитать');
_exit := MenuAppendString('Выйти');
repeat
delay(100);
clicked := GetClickedCommand;
until clicked <> EmptyCommand;
if MenuGetSelectedIndex=_write then write;
if MenuGetSelectedIndex=_read then read;
if MenuGetSelectedIndex=_exit then Halt;
end;

begin

CreateMenu;
end.

IVenoMI 25.07.2007 16:58

Re: Как сохранить в файл?
 
Тю, так естесно... Обрати внимание на код, ты читаешь только то, что записал в период запуска программы, поскольку пользууешся одной переменной index...

gunner05 25.07.2007 17:56

Re: Как сохранить в файл?
 
можешь на примере этого кода внести изминения чтобы данные сохранялись при выходе из приложения???????

ViNT 26.07.2007 13:48

Re: Как сохранить в файл?
 
Данные то у тебя сохраняются, только вот читаешь ты их изниоткуда:
Код:

procedure read;
begin
rs := openRecordStore('phone');
name := readRecordStoreEntry(rs, index);
closeRecordStore(rs);

showCanvas;
setColor(255, 0, 0);
drawText(name, 5, 5);
repaint;
delay(3000);
CreateMenu;
end;

Переменная indexпосле записи имеет значение ячейки, в которую ты записал номер, но после перезапуска она равна 0.

Поэтому, нужно запрашивать у пользователя индекс ячейки и писать в неё, потом запрашивать индекс при чтении.

gunner05 26.07.2007 15:31

Re: Как сохранить в файл?
 
спасибо, с этим я уже разобрался, вот что получилось

program sender_w;
procedure CreateMenu;forward;
var rs: recordStore;
ok, cancel, clicked: command;
index, phone: integer;
name, phone2: string;
_write,_read,_exit:integer; //для меню
nextId : integer;

procedure write;
begin
clearForm;
showform;
ok:=createCommand('Сохранить',CM_SCREEN,0);
cancel:=createCommand('Назад',CM_SCREEN,1);
addcommand(ok);
addcommand(cancel);
phone:= formAddTextField('номер', '', 15, TF_NUMERIC);

repeat
delay(100);
clicked := getClickedCommand;
until clicked <> emptyCommand;

if clicked = cancel then CreateMenu;

phone2:= formGetText(phone);

rs := openRecordStore('phone');
ModifyRecordStoreEntry(rs,phone2,1 );
//index := addRecordStoreEntry(rs, phone2);
closeRecordStore(rs);
CreateMenu;
end;
procedure read;
begin
rs := openRecordStore('phone');
name := readRecordStoreEntry(rs, 1);
closeRecordStore(rs);

showCanvas;
setColor(255, 0, 0);
drawText(name, 5, 5);
repaint;
delay(3000);
CreateMenu;

end;
Procedure InitRS(RSName:String);
Begin
rs := OpenRecordStore(RSName);
nextId := GetRecordStoreNextId(rs);
// Если это первый запуск программы, то инициализация
if nextId = 1 then
nextId := AddRecordStoreEntry(rs, '0'); // кол-во записей равно нулю
// закрытие record store
CloseRecordStore(rs);
End;


procedure CreateMenu;
begin
ShowMenu('Меню', CH_IMPLICIT);
_write := MenuAppendString('Записать');
_read := MenuAppendString('Прочитать');
_exit := MenuAppendString('Выйти');
repeat
delay(100);
clicked := GetClickedCommand;
until clicked <> EmptyCommand;
if MenuGetSelectedIndex=_write then write;
if MenuGetSelectedIndex=_read then read;
if MenuGetSelectedIndex=_exit then Halt;
end;

begin
InitRS('phone');
CreateMenu;
end.

=======================================

назначение процедуры InitRS так и не понял но без нее не работает


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

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