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

end

Типа так

sidav 30.07.2010 10:34

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

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

program rs
var rs recordStore
     
countStr string;
     
countIntnextIdindex integer;
begin
   rs 
:= OpenRecordStore('Count'); //открываем RMS
   
{если первый запускдобавляем запись}
   if 
nextId 1 then 
    index 
:= AddRecordStoreEntry(rs'0'//сначала 0 (или 'КУКУ', '4tf^&' и т.д)
   
countStr := ReadRecordStoreEntry(rs1); // читаем запись
   
{делаем черное дело -- модифицируем переменную}
    
countInt := StringToInteger(countStr) + 1
    
countStr := IntegerToString(countInt); 
   {
В данном случае увеличиваем на 1}
    
ModifyRecordStoreEntry(rscountStr1);  // coхраняем
   
CloseRecordStore(rs);   // закрываем хранилище
   
{делаемчто хотим}
    
ShowForm
  
index := FormAddString('Значение переменной countStr: ' countStr); 
   
  
AddCommand(CreateCommand('Exit'CM_EXIT1));   
  
repeat Delay(100until 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 
rndwthsum RecordStore;
     
abcnextIDindex1index2index3 Integer;
     
save_asave_bsave_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');
{
задаём переменные}
:= random(1337);
:= GetWidth;
:= sqrt(34+56/78*34); 
{
переводим в string}
save_a := IntegerToString(a);
save_b := IntegerToString(b);
save_c := IntegerToString(c); 
{
сохраняем}
ModifyRecordStoreEntry(rndsave_a1);
ModifyRecordStoreEntry(wthsave_b1);
ModifyRecordStoreEntry(sumsave_c1);
{
готово!}
end

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

read_a := ReadRecordStoreEntry(rnd1);
read_b := ReadRecordStoreEntry(wth1);
read_c := ReadRecordStoreEntry(sum1);
{
Это всё stringпереводим в integer через StringToInteger


odd 14.08.2010 16:36

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

PHP код:

program rs 
var rs recordStore;  
     
countStr string
     
countIntnextIdindexabinteger
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(rs1); // читаем запись 
    
:= StringToInteger(countStr);  
    
countStr := ReadRecordStoreEntry(rs2); // читаем запись 
    
:= StringToInteger(countStr);
    
countStr := ReadRecordStoreEntry(rs3); // читаем запись 
    
:= StringToInteger(countStr);

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

    {
Сохраняем все переменные
    
ModifyRecordStoreEntry(rs'' a1);  // coхраняем a
    
ModifyRecordStoreEntry(rs'' b2);  // coхраняем b
    
ModifyRecordStoreEntry(rs'' c3);  // 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, время: 09:46.

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