線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1030
推到 Plurk!
推到 Facebook!

如何將自定義的對象存檔到Disk,然后再從Disk上Load到記憶體並還原成一個對象?

尚未結案
strive1314
一般會員


發表:4
回覆:5
積分:1
註冊:2004-01-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-20 15:44:28 IP:61.145.xxx.xxx 未訂閱
也就是關于對象的Serialize的問題。像Java語言有對象的Serialize機製,Delphi裏麵如何實現呢?
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-21 05:43:00 IP:203.203.xxx.xxx 未訂閱
對象? Delphi 裡沒這種名稱
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-21 09:45:12 IP:147.8.xxx.xxx 未訂閱
對象 == object?    For TPersistent, you may find Orpheus useful:    http://sourceforge.net/projects/tporpheus/ Or you may create your own save/load methods. Hints: look at SaveToStream and LoadFromStream methods of various VCL components.... For TComponent you may want to take a look at TRead and TWriter.
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-21 12:30:31 IP:203.203.xxx.xxx 未訂閱
還是妳要問的是 Serialize ? 也許這個是你要的 http://www.codeguru.com/treeview/serialize_to_text.shtml
strive1314
一般會員


發表:4
回覆:5
積分:1
註冊:2004-01-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-22 08:29:23 IP:61.145.xxx.xxx 未訂閱
先恭祝William版主猴年身體健康事業猴來居上! 對,這裏我說的對象就是=Object 我看到網路上有幾個英文的帖子介紹的類似于Java的把一個Object序列化成XML的思路,不知Delphi裏麵有沒有類似的技術可以實現。
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-22 08:41:38 IP:192.168.xxx.xxx 未訂閱
參考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29527 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
strive1314
一般會員


發表:4
回覆:5
積分:1
註冊:2004-01-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-26 10:40:30 IP:220.198.xxx.xxx 未訂閱
引言: 還是妳要問的是 Serialize ? 也許這個是你要的 http://www.codeguru.com/treeview/serialize_to_text.shtml
Syntax前輩: 新年好! 對,我要的就是關于一個自定義物件的Serialize的實作,有沒有Delphi的關于這方麵的資料呢?
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-01-26 11:40:09 IP:203.203.xxx.xxx 未訂閱
確定一下妳要的是: 1.作用的對像是 一個自訂的物件(Object) 2.Serialize 是指將該物件轉成內容敘述儲存在硬碟上的檔案,或是將硬碟上存的內容敘述轉成一個物件,然後運作 而妳要的是 run time 的 Serialize 還是 Design time 的?
strive1314
一般會員


發表:4
回覆:5
積分:1
註冊:2004-01-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-01-26 15:08:53 IP:220.198.xxx.xxx 未訂閱
Syntax: 我想實作的是Runtime的Object的Serialize方法。謝謝!
solnone
中階會員


發表:2
回覆:97
積分:69
註冊:2003-05-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-01-26 22:55:06 IP:218.168.xxx.xxx 未訂閱
你可以使用 TStream 的 WriteComponent 和 ReadComponent 來實現 你的 object 繼承自 TComponent 之後 下面的 Button2 會由 ReadComponent 來 Create 並設定和原 Button1 一樣 var Button2: TButton; procedure TForm1.Button1Click(Sender: TObject); var fs: TFileStream; begin RegisterClass(TButton); fs := TFileStream.Create('c:\objects.data', fmCreate); try fs.WriteComponent(Button1); Button1.Top := 0; Button1.Left := 0; Button1.Caption := 'Old Button1'; finally fs.Free; end; fs := TFileStream.Create('c:\objects.data', fmOpenRead); try Button2 := (fs.ReadComponent(nil)) as TButton; Button2.Parent := self; finally fs.Free; end; end;
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-01-27 10:04:05 IP:210.243.xxx.xxx 未訂閱
引言: 也就是關于對象的Serialize的問題。像Java語言有對象的Serialize機製,Delphi裏麵如何實現呢?
你可以查看ObjectTextToBinary 的help 裡面有範例將Component的屬性轉成文字
 
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;
混心雜欲 棄修身~唉
------
唉~
系統時間:2024-05-03 1:36:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!