从TBlobField里读出的数据,怎么样才能转化成某个类的实例?(100)

  • 主题发起人 主题发起人 wukw
  • 开始时间 开始时间
W

wukw

Unregistered / Unconfirmed
GUEST, unregistred user!
从TBlobField里读出的数据,怎么样才能转化成某个类的实例?这个类定义如下:TcxSchedulerEventRecurrenceInfo 至少包含有以下属性: Count DayNumber DayType DismissDate Event Finish OccurDays Periodicity Recurrence Start YearPeriodicity我就是想在Blob转换成TcxSchedulerEventRecurrenceInfo之后,利用它的属性进行分析和运算。但是我不会转换。 stream1: TMemoryStream; with ADOPubSch do begin Close; SQL.Clear; SQL.Add('SELECT * FROM sch_pub '); Open; while not eof do begin TBlobField(Fieldbyname('RecurrenceInfo')).SaveToStream(stream1); // 到这一步之后得到一个MemoryStream,怎么转成TcxSchedulerEventRecurrenceInfo的实例呢? // 或者有其它办法不用MemoryStream得到这个BlobField的数据呢? Next; end;========================================题外话:具体的说,是DevExpress的TcxScheduler2控件,也就是日程安排表控件,对应的数据库的一个字段是Blob类型。但是我必须把它读出来并加以分析和转换。有经验的大侠们还请指教一二,非常感谢!
 
对象的流化或者叫序列化流化function ComponentToStringProc(Component: TComponent): string;var BinStream:TMemoryStream; StrStream: TStringStream; s: string;begin BinStream := TMemoryStream.Create; try StrStream := TStringStream.Create(s); try BinStream.WriteComponent(Component); BinStream.Seek(0, soFromBeginning); ObjectBinaryToText(BinStream, StrStream); StrStream.Seek(0, soFromBeginning); Result:= StrStream.DataString; finally StrStream.Free; end; finally BinStream.Free end;end; 反流化function StringToComponentProc(Value: string): TComponent;var StrStream:TStringStream; BinStream: TMemoryStream;begin StrStream := TStringStream.Create(Value); try BinStream := TMemoryStream.Create; try ObjectTextToBinary(StrStream, BinStream); BinStream.Seek(0, soFromBeginning); Result:= BinStream.ReadComponent(nil); finally BinStream.Free; end; finally StrStream.Free; end;end;
 
谢谢楼上的,但是我不是要转成String,是要转成某个类的实例啊。麻烦再帮忙看一下。
 
首先定义实例的指针,通过CopyMemery把流里面的数据复制到实例指针。
 
用 Stream.ReadComponent 方法就行了。
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
后退
顶部