熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

DELPHI基礎教程:開發Delphi對象式數據管理功能(一)[5]

2013-11-23 17:48:01  來源: Delphi編程 

  ⑵ Write方法

  Write方法從內存流內部緩沖池的當前位置開始寫入二進制數據其實現如下

  function TMemoryStreamWrite(const Buffer; Count: Longint) Longint;

  var

  Pos: Longint;

  begin

  if (FPosition >= ) and (Count >= ) then

  begin

  Pos := FPosition + Count;

  if Pos > then

  begin

  if Pos > FSize then

  begin

  if Pos > FCapacity then

  SetCapacity(Pos)

  FSize := Pos;

  end;

  SystemMove(Buffer Pointer(Longint(FMemory) + FPosition)^ Count)

  FPosition := Pos;

  Result := Count;

  Exit;

  end;

  end;

  Result := ;

  end;

  Buffer中存儲要寫入流的二進制數據如果要寫入的數據的字節超出了流的內存池的大小則調用SetCapacity方法再分配內存然後用內存復制函數將Buffer中的數據復制到FMemory中接著移動位置指針並返回寫入數據的字節數分析這段程序可以知道FCapacity的值和FSize的值是不同的

  ⑶ Clear方法

  Clear方法消除內存流中的數據將Memory屬性置為nil並將FSize和FPosition 的值設為其實現如下

  procedure TMemoryStreamClear;

  begin

  SetCapacity(

  FSize := ;

  FPosition := ;

  end;

  ⑷ LoadFromStream和LoadFromFile方法

  LoadFromStream方法首先根據傳入的Stream的Size屬性值重新分配動態內存然後調用Stream的ReadBuffer方法往FMemory中復制數據結果Stream的全部內容在內存中有了一份完整拷貝其實現如下

  procedure TMemoryStreamLoadFromStream(Stream: TStream)

  var

  Count: Longint;

  begin

  StreamPosition := ;

  Count := StreamSize;

  SetSize(Count)

  if Count <> then StreamReadBuffer(FMemory^ Count)

  end;

  LoadFromFile與LoadFromStream是一對方法LoadFromFile首先創建了一個TFileStream對象然後調用LoadFromStream方法將FileStream文件流中的數據寫入MemoryStream中

  返回目錄DELPHI基礎教程

       編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南

  Java程序性能優化讓你的Java程序更快更穩定

  C嵌入式編程設計模式

  Android游戲開發實踐指南

[]  []  []  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/25108.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.