Форум: "Основная";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
ВнизСохранение обьектов классов в файловый поток Найти похожие ветки
← →
Ромка © (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 вся ветка
Форум: "Основная";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c