|
Основной форум Сюда все проблемы связанные с программированием. |
25.07.2007, 16:54
|
#16
|
AnyKey`щик
Регистрация: 25.07.2007
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
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.
|
(Offline)
|
|
25.07.2007, 16:58
|
#17
|
Знающий
Регистрация: 10.08.2006
Сообщений: 254
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Как сохранить в файл?
Тю, так естесно... Обрати внимание на код, ты читаешь только то, что записал в период запуска программы, поскольку пользууешся одной переменной index...
|
(Offline)
|
|
25.07.2007, 17:56
|
#18
|
AnyKey`щик
Регистрация: 25.07.2007
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Как сохранить в файл?
можешь на примере этого кода внести изминения чтобы данные сохранялись при выходе из приложения???????
|
(Offline)
|
|
26.07.2007, 13:48
|
#19
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
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.
Поэтому, нужно запрашивать у пользователя индекс ячейки и писать в неё, потом запрашивать индекс при чтении.
|
(Offline)
|
|
26.07.2007, 15:31
|
#20
|
AnyKey`щик
Регистрация: 25.07.2007
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
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 так и не понял но без нее не работает
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:05.
|