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)

Red Ninja 25.12.2005 19:00

Как сохранить в файл???Помоги а как сохранить переменый и массив в файл!
Загрушать я примерно понел а сохранять непонел!

pax 25.12.2005 21:02

Справку читать надо ;)
Для этого используется Record store (хранилище записей)

вот пример из справки:
Код:

var rs    : recordStore;
  countStr : string;
  countInt : integer;
  index  : integer;
  nextId  :integer;
begin
 rs := OpenRecordStore('Count');
 
 nextId := GetRecordStoreNextId(rs);
 
 // Если это первый запуск программы, то инициализация
 if nextId = 1 then
  index := AddRecordStoreEntry(rs, '0'); // кол-во записей равно нулю
 
 // чтение кол-ва запусков программы
 countStr := ReadRecordStoreEntry(rs, 1);   
 
 // увеличение на один
 countInt := StringToInteger(countStr) + 1;
 countStr := IntegerToString(countInt);
 
 // сохранение
 ModifyRecordStoreEntry(rs, countStr, 1);
 
 // закрытие record store
 CloseRecordStore(rs); 
 
 // отображение кол-ва запусков
 ShowForm;
 index := FormAddString('Number of runs: ' + countStr);
 
 AddCommand(CreateCommand('Exit', CM_EXIT, 1)); 
 repeat Delay(100) until GetClickedCommand <> EmptyCommand;

end.

;)

Red Ninja 26.12.2005 08:05

Спасибо тебе я думал это функция как временая память!!!!

Но всёравно нельзя некак мохранять в txt файл нужные мне параметры!

Red Ninja 26.12.2005 08:57

Смотри я делаю всё вродк правильно:
Код:

.......
 *if (menuGetSelectedIndex=Save) and (i=2) then
 begin
 * rs := OpenRecordStore('Save'); *
 * ModifyRecordStoreEntry(rs,IntegerToString(Years),1);
 * ModifyRecordStoreEntry(rs,IntegerToString(indx),2);
 * ModifyRecordStoreEntry(rs,IntegerToString(indxMonstr),3);
 * ModifyRecordStoreEntry(rs,IntegerToString(kamen),4);
 * ModifyRecordStoreEntry(rs,IntegerToString(heal),5);
 * ModifyRecordStoreEntry(rs,IntegerToString(time),6);
 * ModifyRecordStoreEntry(rs,IntegerToString(timeY),7);
 * ModifyRecordStoreEntry(rs,IntegerToString(MenuG),8);
 * ModifyRecordStoreEntry(rs,Cursor,9);
 *
 * CloseRecordStore(rs);
 * ClearForm;
 * menu(i);
 end;
 
 * if (menuGetSelectedIndex=LoadG) and (i=2) then
 begin
 * rs := OpenRecordStore('Save');
 
 * Years * * :=StringToInteger(ReadRecordStoreEntry(rs,1));
 * indx * * *:=StringToInteger(ReadRecordStoreEntry(rs,2));
 * indxMonstr:=StringToInteger(ReadRecordStoreEntry(rs,3));
 * kamen * * :=StringToInteger(ReadRecordStoreEntry(rs,4));
 * heal * * *:=StringToInteger(ReadRecordStoreEntry(rs,5));
 * time * * *:=StringToInteger(ReadRecordStoreEntry(rs,6));
 * timeY * * :=StringToInteger(ReadRecordStoreEntry(rs,7));
 * MenuG * * :=StringToInteger(ReadRecordStoreEntry(rs,8));
 * Cursor * *:=ReadRecordStoreEntry(rs,9);

 * CloseRecordStore(rs);
 *
 * ClearForm;
 * menu(i);
 end;
.......

А несего неполучаеться :(


Используйте соответствующие теги
да и зарегистрироваться не мешало бы :rolleyes:

pax 27.12.2005 21:46

Главное при использовании RS это первый запуск программы, т.е. при первом запуске происходит инициализация...

Попробуй использовать такую процедуру:

Код:

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

И в самой программе исрользуй в самом начале:

Код:

program MY_PROG;
...
Begin
InitRS('Save');
...

End.


Guest 28.12.2005 07:55

мне то нужно чтобы несколько параметров сохраналось принажатии на Save
а потом загрузалось при нажатии Load
Так вот я спрашиваю можноли в RecordStore несколько параметров сохранять и потом загружать????

pax 28.12.2005 11:27

Цитата:

Originally posted by Guest@Dec 28 2005, 07:55 AM
мне то нужно чтобы несколько параметров сохраналось принажатии на Save
а потом загрузалось при нажатии Load
Так вот я спрашиваю можноли в RecordStore несколько параметров сохранять и потом загружать????

Конечно можно, зачем же тогда индексы!

А на чем ты тестишь свои мидлеты? Может MidpX попробуешь? ;)

pax 28.12.2005 11:53

Вот по мойму твоя ошибка:
Цитата:

.......
if (menuGetSelectedIndex=Save) and (i=2) then
begin
* rs := OpenRecordStore('Save');*
* ModifyRecordStoreEntry(rs,IntegerToString(Years),1 );
* ModifyRecordStoreEntry(rs,IntegerToString(indx),2) ;
* ModifyRecordStoreEntry(rs,IntegerToString(indxMons tr),3);
* ModifyRecordStoreEntry(rs,IntegerToString(kamen),4 );
* ModifyRecordStoreEntry(rs,IntegerToString(heal),5) ;
* ModifyRecordStoreEntry(rs,IntegerToString(time),6) ;
* ModifyRecordStoreEntry(rs,IntegerToString(timeY),7 );
* ModifyRecordStoreEntry(rs,IntegerToString(MenuG),8 );
* ModifyRecordStoreEntry(rs,Cursor,9);

* CloseRecordStore(rs);
* ClearForm;
* menu(i);
end;

* if (menuGetSelectedIndex=LoadG) and (i=2) then
begin
* rs := OpenRecordStore('Save');

* Years* * :=StringToInteger(ReadRecordStoreEntry(rs,1));
* indx* * * :=StringToInteger(ReadRecordStoreEntry(rs,2));
* indxMonstr:=StringToInteger(ReadRecordStoreEntry(r s,3));
* kamen* * :=StringToInteger(ReadRecordStoreEntry(rs,4));
* heal* * * :=StringToInteger(ReadRecordStoreEntry(rs,5));
* time* * * :=StringToInteger(ReadRecordStoreEntry(rs,6));
* timeY* * :=StringToInteger(ReadRecordStoreEntry(rs,7));
* MenuG* * :=StringToInteger(ReadRecordStoreEntry(rs,8));
* Cursor* * :=ReadRecordStoreEntry(rs,9);

* CloseRecordStore(rs);
*
* ClearForm;//Стереть нахрен ;)
* menu(i);
end;
.......

хотя еще не известно что ты этим пытался сделать ;)

Red Ninja 28.12.2005 16:08

Бл*** точно забыл стереть эту ху***!
ШАс посмотрю работает или нет!

Guest 28.12.2005 16:28

Не всёравно чето невыходит :(
Писал сам прогу для сохранииея параметров которые я вашу
всё работает,а шас игру пиши и невоходит страно!!!
Даже если я один параметр сохраняю :( НЕВОХОДИТ!!!

Red Ninja 28.12.2005 16:29

Impersonalis,извени что матерился!

Red Ninja(Михайлов Никита) 30.12.2005 15:37

Я сделал сохранения и гагрузки просто забыл про AddRecordStoreEntry(rs, '0'); !

pax 01.01.2006 19:34

Цитата:

Originally posted by Red Ninja(Михайлов Никита)@Dec 30 2005, 03:37 PM
Я сделал сохранения и гагрузки просто забыл про AddRecordStoreEntry(rs, '0'); !
Ну и лады ;)

gunner05 25.07.2007 15:53

Re: Как сохранить в файл?
 
Код:

procedure setings;
begin
  // читаем номер телефона из хранилища
 rs := openRecordStore('phone');
  name := readRecordStoreEntry(rs, index);
  closeRecordStore(rs);
 
 // создаем форму и в текстовом поле выводим номер из хранилища
 clearForm;
 showform;
  ok:=createCommand('Сохранить',CM_SCREEN,0);
  cancel:=createCommand('Назад',CM_SCREEN,1);
 addcommand(ok);
 addcommand(cancel);
 phone:= formAddTextField('Текущий номер', name, 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;

процедура считывает номер телефона из хранилища и выводит в TextField, если его изменить то записывает новый, в последствии выводит уже новый телефон.
проблема в том что чтение и запись работает только пока java приложение запущено, если приложение остановить то из хранилища запись пропадает....как это побороть?????

IVenoMI 25.07.2007 16:45

Re: Как сохранить в файл?
 
Бред какой то... Записи - сохранение данных в энергонезависимую память, они должны сохранятся после завершения приложения...


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

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