Главная страница
    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
Время: 0.045 c
15-1181913417
VID
2007-06-15 17:16
2007.07.15
Помогите найти книгу по JBoss на русском.. плЫз


1-1179159059
Dmitry_177
2007-05-14 20:10
2007.07.15
прокручивание таблицы StringGrid колесиком


2-1182154444
kyro
2007-06-18 12:14
2007.07.15
Вопрос по рендому


15-1181983506
Сатир
2007-06-16 12:45
2007.07.15
Как из экзешника запустить батник?


15-1181765527
megajober3d
2007-06-14 00:12
2007.07.15
Как работать с idHTTP, кто знает, кто здесь самый крутой :)!!!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский