delphi序列化物件的方法總結

2022-06-08 15:24:09 字數 1940 閱讀 4639

1.元件物件的序列化

從tcomponent繼承下來的元件物件序列化都簡單,因為它本身支援流化,通過流化也就達到了序列化元件物件的目的。

treader和twriter都只支援tcomponent流化,除非你自己寫個treader和twriter,就有可能支援tpersiten的流化.

function   componenttostring(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   stringtocomponent(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;

2.非元件物件的序列化

非元件物件,也就是從tobject或者從tpersisten繼承下來的物件的序列化卻要變通一下。

方法很簡單,就是sizeof(tmyobject)的大小,定義乙個buffer指向物件,直接把那一塊記憶體寫入檔案,反序列化時從檔案讀取就可以了,

這就是對非元件物件有效的序列化.

服務端序列化物件傳送流程:

第一步:

varbuffer: array[0..1023] of char;//定義乙個緩衝區

第二步:

move(myobj, buffer, sizeof(count));//將物件的記憶體搬移到緩衝區

第三步:

writefilefrombuffer();//將緩衝區寫入檔案

第四步:

傳送這個檔案給客戶端

客戶端反序列化還原物件流程:

第一步:

接收這個檔案

第二步:

readfiletobuffer()

第三步:

move(buffer,myobj,sizeof(count)) //還原物件

delphi序列化物件的方法總結

1.元件物件的序列化 從tcomponent繼承下來的元件物件序列化都簡單,因為它本身支援流化,通過流化也就達到了序列化元件物件的目的。treader和twriter都只支援tcomponent流化,除非你自己寫個treader和twriter,就有可能支援tpersiten的流化.function...

Delphi 序列化 和 反序列化

delphi中序列化的方法。讀 delphi view plaincopyprint?function tstream.readcomponentres instance tcomponent tcomponent function tstream.readcomponentres instance...

物件序列化 反序列化

必須新增引用 using system.io using system.runtime.serialization using system.runtime.serialization.formatters.binary 方法 region 物件序列化 物件序列化 任意物件 字串 public st...