Страница 1 из 1

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

Добавлено: 25 дек 2009, 20:06
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 к сожалению не сериализуется

Добавлено: 28 дек 2009, 16:48
Max_Fin
Ух ты, не знал :o

Добавлено: 29 дек 2009, 17:52
Screw
Неприятность в том, что, если структура записи в некторый момент изменится, то правильно поднять из деска то, что было положено в него раньше, не получится - ожидаемое и хранимое не совпадают по структуре и, возможно, размерам. В результате - либо неудачное чтение, либо шлак в полях записи. В принципе, можно себя обезопасить, но вряд ли овчинка стоит выделки. Поэтому просто имейте в виду сей факт и ОБЯЗАТЕЛЬНО обрабатывайте результат вызова ReadMyDsk.

Добавлено: 03 янв 2010, 17:26
Yuri
Screw
Спасибо за предупреждение