Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.15;
Скачать: 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 вся ветка

Текущий архив: 2007.07.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.022 c
3-1176552454
Чародей
2007-04-14 16:07
2007.07.15
Связи


3-1176746454
так себе
2007-04-16 22:00
2007.07.15
Узнать название полей


2-1182165273
Inga
2007-06-18 15:14
2007.07.15
фильтрация данных


2-1182181846
nord489
2007-06-18 19:50
2007.07.15
Защита файла


2-1182156493
ssss
2007-06-18 12:48
2007.07.15
Как закруглить уголки формы ?