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

sidav 30.07.2010 10:06

Сохранение.
 
Извините, если такая тема уже была... В общем, в хелпе я ничего не понял по этой теме. Допустим, у нас есть переменные а,б,в. Как их сохранить в хранилище и как их потом загрузить оттуда?

Bananbl4 30.07.2010 10:23

Ответ: Сохранение.
 
В хелпе всё понятно. Вот кусок нужный тебе:
PHP код:

program rs
var rs : recordStore; 
     
countStr : string;
     
countInt, nextId, index : integer;
begin
   rs 
:= OpenRecordStore('Count'); //открываем RMS
   
{если первый запуск, добавляем запись}
   if 
nextId = 1 then 
    index 
:= AddRecordStoreEntry(rs, '0') //сначала 0 (или 'КУКУ', '4tf^&' и т.д)
   
countStr := ReadRecordStoreEntry(rs, 1); // читаем запись
   
{делаем черное дело -- модифицируем переменную}
    
countInt := StringToInteger(countStr) + 1; 
    
countStr := IntegerToString(countInt); 
   {
В данном случае увеличиваем на 1}
    
ModifyRecordStoreEntry(rs, countStr, 1);  // coхраняем
   
CloseRecordStore(rs);   // закрываем хранилище
   
{делаем, что хотим}
    
ShowForm; 
  
index := FormAddString('Значение переменной countStr: ' + countStr); 
   
  
AddCommand(CreateCommand('Exit', CM_EXIT, 1));   
  
repeat Delay(100) until GetClickedCommand <> EmptyCommand; 

end. 

Типа так

sidav 30.07.2010 10:34

Ответ: Сохранение.
 
Цитата:

Сообщение от Bananbl4 (Сообщение 156663)
В хелпе всё понятно. Вот кусок нужный тебе:
PHP код:

program rs
var rs : recordStore; 
     
countStr : string;
     
countInt, nextId, index : integer;
begin
   rs 
:= OpenRecordStore('Count'); //открываем RMS
   
{если первый запуск, добавляем запись}
   if 
nextId = 1 then 
    index 
:= AddRecordStoreEntry(rs, '0') //сначала 0 (или 'КУКУ', '4tf^&' и т.д)
   
countStr := ReadRecordStoreEntry(rs, 1); // читаем запись
   
{делаем черное дело -- модифицируем переменную}
    
countInt := StringToInteger(countStr) + 1; 
    
countStr := IntegerToString(countInt); 
   {
В данном случае увеличиваем на 1}
    
ModifyRecordStoreEntry(rs, countStr, 1);  // coхраняем
   
CloseRecordStore(rs);   // закрываем хранилище
   
{делаем, что хотим}
    
ShowForm; 
  
index := FormAddString('Значение переменной countStr: ' + countStr); 
   
  
AddCommand(CreateCommand('Exit', CM_EXIT, 1));   
  
repeat Delay(100) until GetClickedCommand <> EmptyCommand; 

end. 

Типа так

Блин. Ну вот прям ни фига не понятно... Можно ли на примере трех переменных a, b, c типа integer?

cherepets 30.07.2010 12:35

Ответ: Сохранение.
 
сохраняются только строки туда. можно сделать так:
ModifyRecordStoreEntry(rs, ''+a+' '+b+' '+c, 1);

можно еще в 3 разных хранилища записать

Bananbl4 30.07.2010 16:07

Ответ: Сохранение.
 
PHP код:

program blTb;
var 
rnd, wth, sum : RecordStore;
     
a, b, c, nextID, index1, index2, index3 : Integer;
     
save_a, save_b, save_c : string;
begin
{если первый запуск, создаём хранилища}
 if 
nextId = 1 then  
    index1 
:= AddRecordStoreEntry(rnd, '0');
    
index2 := AddRecordStoreEntry(wth, '0');
    
index3 := AddRecordStoreEntry(sum, '0')
{
открываем 3 разных хранилища, напр 'Random', 'Width', 'Calc'}
rnd := OpenRecordStore('Random');
wth := OpenRecordStore('Width');
sum :=  OpenRecordStore('Calc');
{
задаём переменные}
a := random(1337);
b := GetWidth;
c := sqrt(34+56/78*34); 
{
переводим в string}
save_a := IntegerToString(a);
save_b := IntegerToString(b);
save_c := IntegerToString(c); 
{
сохраняем}
ModifyRecordStoreEntry(rnd, save_a, 1);
ModifyRecordStoreEntry(wth, save_b, 1);
ModifyRecordStoreEntry(sum, save_c, 1);
{
готово!}
end. 

а потом, если хотим прочитать:
PHP код:

read_a := ReadRecordStoreEntry(rnd, 1);
read_b := ReadRecordStoreEntry(wth, 1);
read_c := ReadRecordStoreEntry(sum, 1);
{
Это всё string, переводим в integer через StringToInteger} 


odd 14.08.2010 16:36

Ответ: Сохранение.
 
Можно всё хранить и в одном хранилище:

PHP код:

program rs 
var rs : recordStore;  
     
countStr : string; 
     
countInt, nextId, index, a, b, c : integer; 
begin 
   rs 
:= OpenRecordStore('ABC'); //открываем RMS 
   
{если первый запуск, добавляем 3 записи} 
   if 
nextId = 1 then  
    index 
:= AddRecordStoreEntry(rs, '0') //сначала 0
    
index := AddRecordStoreEntry(rs, '0') //сначала 0
    
index := AddRecordStoreEntry(rs, '0') //сначала 0 (добавляем 3 записи)

{читаем переменные} 
    
countStr := ReadRecordStoreEntry(rs, 1); // читаем запись 
    
a := StringToInteger(countStr);  
    
countStr := ReadRecordStoreEntry(rs, 2); // читаем запись 
    
b := StringToInteger(countStr);
    
countStr := ReadRecordStoreEntry(rs, 3); // читаем запись 
    
c := StringToInteger(countStr);

{
что-то делаем с переменными}

    {
Сохраняем все переменные} 
    
ModifyRecordStoreEntry(rs, '' + a, 1);  // coхраняем a
    
ModifyRecordStoreEntry(rs, '' + b, 2);  // coхраняем b
    
ModifyRecordStoreEntry(rs, '' + c, 3);  // coхраняем c
    
CloseRecordStore(rs);   // закрываем хранилище 
   
{делаем, что хотим} 
    
end. 


AssA 01.08.2011 14:17

Ответ: Сохранение.
 
подскажите, не могу найти - макс длинна одной записи в recordstore - как и string 255 символов?

Жека 01.08.2011 15:03

Ответ: Сохранение.
 
Точно не скажу, но: разве нынче строки не могут в несколько килобайт разрастаться? Проверь экспериментом.

YellowAfterlife 02.08.2011 09:34

Ответ: Сохранение.
 
Цитата:

Сообщение от AssA (Сообщение 197512)
подскажите, не могу найти - макс длинна одной записи в recordstore - как и string 255 символов?

Это Java. Максимальная длина строки (String) в Java состовляет 2,147,483,647 unicode символов. Это (немного не мало) - 4 гб информации, что "немного превышает" общие объемы памяти, доступные на современных мобильных устройствах.

Жека 02.08.2011 13:53

Ответ: Сохранение.
 
Другое дело, что размер записи бывает ограничен, то есть не всю флеху можно забить, а лишь сколько-то (обычно в мегабайтах).

AssA 18.08.2011 01:29

Ответ: Сохранение.
 
вот спасибо! так много, что растерялся. я так полагаю, что размер самого RecordStore примерно такого же порядка?

im_zorg 19.08.2011 14:50

Ответ: Сохранение.
 
Вроде где-то в JimmBest видел максимальный размер хранилища, под историю, там написанно примерно 150-200кб(Тел Nokia 5130c-2 v07.97 ppm by walera14, cnt by walera14:D:D:D:D). Сильно не бейте если не прав=)


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

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