Быстро сохранить и восстановить в/из dsk

База знаний

Модераторы: m0p3e, edward_K, Модераторы

Ответить
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Быстро сохранить и восстановить в/из dsk

Сообщение galover »

Надо же не знал. Оказывается функции SaveMyDsk и ReadMyDsk умеют работать не только с примитивными типами данных, но и со структурами. Т.о. можно одним махом сохранить и считать значение нескольких параметров.
Было

Код: Выделить всё

var
  TaxRate : integer;
  Total : double;

cmInit:
{
  ReadMyDsk(TaxRate, 'TaxRate', true);
  ReadMyDsk(Total, 'Total', true);
}
cmDone:
{
  SaveMyDsk(TaxRate, 'TaxRate');
  SaveMyDsk(Total, 'Total');
}
стало

Код: Выделить всё

// Оборачиваем параметры в структуру
var _params : record
  TaxRate : integer;
  Total : double;
end;

cmInit:
{
  ReadMyDsk(_params, 'Params', true);
}
cmDone:
{
  SaveMyDsk(_params, 'Params');
}
с увеличением количества сохраняемых параметров, преимущества налицо - простота отладки и сопровождения - просто добавляем новый параметр в структуру _params и готово.
P.S. table struct к сожалению не сериализуется
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Ух ты, не знал :o
Жду выхода Вселенная 2.12!
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Неприятность в том, что, если структура записи в некторый момент изменится, то правильно поднять из деска то, что было положено в него раньше, не получится - ожидаемое и хранимое не совпадают по структуре и, возможно, размерам. В результате - либо неудачное чтение, либо шлак в полях записи. В принципе, можно себя обезопасить, но вряд ли овчинка стоит выделки. Поэтому просто имейте в виду сей факт и ОБЯЗАТЕЛЬНО обрабатывайте результат вызова ReadMyDsk.
Виталий
Yuri
Посетитель
Сообщения: 43
Зарегистрирован: 18 ноя 2009, 02:56
Откуда: Гомель, Республика Беларусь

Сообщение Yuri »

Screw
Спасибо за предупреждение
Ответить