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


Добавление методов Store.


Здесь приведены методы Store. Заметим, что PGraphPoint не требует его, поскольку не добавляет полей при наследовании от PGraphObject.

type PGraphObject = ^TGraphObject; TGraphObject = object(TObject); . procedure Store(var S: TStream); virtual; end;

PGraphCircle = ^TGraphCircle; TGraphCircle = object(TGraphObject) Raduis: Integer; . procedure Store(var S: TStream); virtual; end;

PGraphRect = ^TGraphRect; TGraphRect = object(TGraphObject) Width, Height: Integer; . procedure Store(var S: TStream); virtual; end;

Реализация Store совершенно проста. Каждый объект вызывает наследуемый метод Store, который сохраняет все наследуемые данные. Затем метод Write потока записывает дополнительные данные.

{ TGraphObject не вызывает TObject.Store, поскольку TObjeсt не имеет данных для сохранения } procedure TGraphObject.Store(var S: TStream); begin S.Write(X, SizeOf(X)); S.Write(Y, SizeOf(Y)); end;

procedure TGraphCircle.Store(var S: TStream); begin TGraphObject.Store(S); S.Write(Radius, SizeOf(Radius)); end;

procedure TGraphRect.Store(var S: TStream); begin TGraphObject.Store(S); S.Write(Width, SizeOf(Width)); S.Write(Height, SizeOf(Height)); end;

Заметим, что метод Write из TStream выполняет двоичную запись. Его первый параметр может быть переменной любого типа, но TStream.Write не знает размера этой переменной. Второй параметр предоставляет эту информацию и Вы должны использовать стандартную функцию SizeOf. Таким образом, если Вы решите изменить координатную систему, используя числа с плавающей точкой, Вам не потребуется корректировать методы Store.




- Начало -  - Назад -  - Вперед -



Книжный магазин