Вниз
Скачать: CL | DM;

Сохранение обьектов классов в файловый поток   Найти похожие ветки 

← →
Ромка ©   (2007-05-11 13:29) [0]

Скажите пожалуйста, как сохранить обьект класса, который включает в себя обьекты инного класса, в файл, используя TFileStream?
Буду признатилен за пример кода.


← →
Novice   (2007-05-11 14:06) [1]

Ну.... например, так:

type TClass1 = class
private
...
protected
...
public
...
property SomeField1 : SomeType read FSomeField1 write SetSomeField1;
property SomeField2 : SomeType read FSomeField2 write SetSomeField2;
...
end;

TClass2 = class
private
...
protected
...
public
...
property SomeProperty : SomeType read FSomeProperty write SetSomeProperty;
property SomeObject : TClass1 read FSomeObject write SetSomeObject;
...
end;

RSaveableHeader = record
Property1 : SomeType;
Property2 : SomeType;
Property3 : SomeType;
end;

procedure TClass2.SaveToFile(FS : TFileName);
var S : TFileStream;
    H : RSaveableHeader;
begin
H.Property1 := SomeProperty;
H.Property2 := SomeObject.Property1;
H.Property2 := SomeObject.Property2;
F := TFileStream.Create("MyFile.mff", fmCreate or fmShareDenyWrite);
F.Write(H, SizeOf(RSaveableHeader));
F.Free;
end;

Писал на коленке и без делфи, поэтому могут быть неточности.

А вообще по идее всем Вашим классам нужно сделать кроме SaveToFile/LoadFromFile еще и SaveToStream(FS : TFileStream)/LoadFromStream(FS : TFileStream);
и когда вызывается процедура сохранения класса-контейнера, в ней создается один экземпляр класса TFileStream, а затем по очереди вызываются методы SaveToStream(FS : TFileStream) у всех дочерних объектов, куда и передается этот экземпляр. А после сохранения дочерних объектов сохраняются поля класса-контейнера. Чтение в той же последовательности.


← →
Kolan ©   (2007-05-11 14:21) [2]

http://rsdn.ru/article/delphi/serialization.xml


← →
Ромка ©   (2007-05-11 14:29) [3]

Спасибо 2Novice & 2Kolan.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.017 c
2-1182063990
scan
2007-06-17 11:06
2007.07.15
Поиск


15-1181992694
inet
2007-06-16 15:18
2007.07.15
Как проще всего закрыть доступ к сайтам?


15-1180463771
Юрий Зотов
2007-05-29 22:36
2007.07.15
Походу


3-1176787182
Xmen
2007-04-17 09:19
2007.07.15
FastReport и данные из базы


6-1166179902
IceBeerg
2006-12-15 13:51
2007.07.15
Определение факта простоя интернет соединеия




   Наверх