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...