Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
Время: 1.287 c
15-1181550809
hahol_64_rus
2007-06-11 12:33
2007.07.15
оболочки


15-1182185504
Грициан
2007-06-18 20:51
2007.07.15
Как вам расширение такое Delphi?


8-1161605495
Ketrikken
2006-10-23 16:11
2007.07.15
Настройка звука в DirectShow


2-1182087449
Delon
2007-06-17 17:37
2007.07.15
Как из мемо вытащить слова содержащие символ @


15-1181807682
rghrg
2007-06-14 11:54
2007.07.15
Факультет фотоники и оптоинформатики





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский