Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сериализация своего объекта в базу


Страницы:   1 2

Tab ©   (2006-10-18 10:48:00) 

Создал свой объект, как сериализовать его в базу? например FB. Буду благодарен за пример.


Tab   (2006-10-19 13:24:00) [21]

procedure MLine.SaveToStream(const AField: TBlobField);
var
bs: TStream;
begin
bs := AField.DataSet.CreateBlobStream(AField, bmWrite);
try
  bs.WriteDescendent(Self, nil);
finally
  bs.Free;
end;
end;

в программе делаю так:
Dm.IBTable1.Edit;
Layer[1].SaveToStream(dm.IBTable1DATA_B);
данные вроде сохранились. так правильно?
а обратную операцию чето не понял как?
Через Query? Выбрать записи, затем в цикле прочитать из BLOB ReadFromStream?  
Если так то ругается то MLine неподходит для TComponent
procedure MLine.LoadFromStream(const AField: TBlobField);
var
bs: TStream;
begin
bs := AField.DataSet.CreateBlobStream(AField, bmWrite);
try
  self:=bs.ReadComponent(nil);
finally
  bs.Free;
end;
end;


Сергей М.   (2006-10-19 11:51:00) [22]


> Tab   (18.10.06 20:14) [13]
> что мне это даст ?


Это (см. [14]) даст универсальность и возможность использования готовойтехнологии Delphi streaming system, как раз и разработанной Борландом для упрощения и унификации сохранения/воспроизведения объектов.


StriderMan   (2006-10-19 11:34:00) [23]


> Tab   (18.10.06 20:14) [13]
>
> > а в чем проблема унаследоваться от TComponent?
>
> что мне это даст ?
> удобоство при обработке SaveToStream?
> Просто в программе счет будет идти на сотни

и в этих сотнях компонент в каждом описывать сохранение свойств??

в наследниках TComponent достаточно их поместить в секцию published и он все сделает за тебя


Tab   (2006-10-18 20:14:00) [24]


> а в чем проблема унаследоваться от TComponent?

что мне это даст ?
удобоство при обработке SaveToStream?
Просто в программе счет будет идти на сотни


StriderMan   (2006-10-18 18:04:00) [25]


> Сергей М. ©   (18.10.06 16:01) [11]

TComponent как раз тот самый велосипед, который такие "друганы" упорно изобретают: у кого колесо квадратное, у кого педалей нет, у кого "седло от унитаза, а педаль от пианино", а руль от КАМАЗа


Сергей М.   (2006-10-18 16:01:00) [26]


> в чем проблема унаследоваться от TComponent?


Распространенное заблуждение - "мой наследник класса TComponent занимает слишком дофига места в какой-то там памяти, сам не знаю в какой, но друган мой типа сказал что так"


StriderMan   (2006-10-18 15:55:00) [27]


> Tab   (18.10.06 14:00) [6]
> а если это не компонент а объект типа
> type
>   Figure_= class

а в чем проблема унаследоваться от TComponent?


Сергей М.   (2006-10-18 15:30:00) [28]


> Tab   (18.10.06 15:26) [8]


Чтение в том жепорядке


Tab   (2006-10-18 15:26:00) [29]

чтение в просто обратном порядке7


Сергей М.   (2006-10-18 14:04:00) [30]


> если это не компонент а объект типа


значит следует последовательно записать в стрим значния тех св-в объекта, которые уникально идентифицируют этот объект.


Tab   (2006-10-18 14:00:00) [31]

а если это не компонент а объект типа
type
  Figure_= class
   objType: integer;
   pt_l: array [1..2] of TGPPoint;
   first_p_set: boolean;
   procedure Draw(gp: TGPGraphics); virtual; abstract;
 end;


StriderMan   (2006-10-18 13:35:00) [32]

procedure TKLCForm.SaveToBlob(const AField: TBlobField);
var
 bs: TStream;
begin
 bs := AField.DataSet.CreateBlobStream(AField, bmWrite);
 try
   bs.WriteDescendent(Self, nil);
 finally
   bs.Free;
 end;
end;


писалось давно, поэтому пояснить почему WriteDescendentне смогу. Но работает именно на FB/IBX.


Сергей М.   (2006-10-18 12:45:00) [33]

http://www.google.ru/search?q=%D0%94%D0%B5%D0%BB%D1%84%D0%B8+%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0+%D0%B2+%D0%BF%D0%BE%D1%82%D0%BE%D0%BA&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:ru:official


Tab   (2006-10-18 12:42:00) [34]


> Если он наследник от TPersistent,

нет он

> Записать последовательно свойства объекта в TBlobStream

пожалуйста киньте примером


Сергей М.   (2006-10-18 11:14:00) [35]


> как сериализовать его в базу?


Записать последовательно свойства объекта в TBlobStream


Desdechado   (2006-10-18 11:06:00) [36]

Если он наследник от TPersistent, то перекрой SaveToStream и сливай все в BLOB-поле.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо