Турбо Паскаль 6.0




Методы Load и Store.


Действительное чтение и запись объектов в поток обрабатывается методами Load и Store. Хотя каждый объект должен содержать эти методы для того, чтобы его можно было использовать с потоками, Вы никогда не вызываете их прямо. (Они вызываются из Get и Put). Все, что Вам требуется сделать - это убедиться, что Ваш объект знает как послать себя в поток, когда ему говорят сделать это. Благодаря ООП эта работа очень проста, поскольку большая часть механизма наследуется из объекта предка. Все, что Ваш объект должен сделать - это загрузить или сохранить ту часть, которую Вы добавили; за остальное отвечает вызов метода предка. Например Вы породили новый тип видимого элемента от TWindow, назвав его именем известного сюрреалиста Рене Магритте, который нарисовал много известных картин с окнами:

type TМagritte = object(TWindow) Painted: Boolean; constructor Load(var S: TStream); procedure Draw; procedure Store(var S: TStream); end;

В часть данных было добавлено только одно поле Boolean. Для того, чтобы загрузить объект, Вы просто читаете стандартный TWindow, а затем читаете дополнительный байт, соответствующий полю Boolean. То же самое применимо к сохранению объекта: Вы просто записываете TWindow, а потом записываете еще один байт. Типичные методы Load и Store для порожденных объектов имеют вид:

constructor TМargitte.Load(var S: Stream); begin TWindow.Load(S); S.Read(Painted, SizeOf(Boolean)) end;

procedure TМargitte.Store(var S: Stream); begin TWindow.Store(S); S.Write(Painted, SizeOf(Boolean)) end;

Предупреждение: Вы полностью ответственны за то, что сохраняется столько же данных, сколько и загружается и что данные загружаются в том же порядке, в каком они сохранялись. Компилятор не выдает ошибок. Это может приводить к огромным проблемам, если Вы неаккуратны. Если Вы изменяете поля объектов, убедитесь, что скорректированы и Load и Store.




Содержание  Назад  Вперед