首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 第 20 章:開發物件導向資料管理功能(二)─ TResourceStream 與 TBlobStream 總覽

     編輯:Delphi

TResourceStream 解構子實作

destructor TResourceStream.Destroy;
begin
  UnlockResource(HGlobal);
  FreeResource(HResInfo);
  inherited Destroy;
end;

回顧 Initialize 方法可知:

  • TResourceStream 不額外配置記憶體,直接使用 HGlobal 指向的記憶體區塊。
  • 資源在流的生命週期內始終處於 Lock 狀態,須依 Windows 記憶體規則合理安排使用時機。
  • 僅用於存取應用程式或動態連結庫(DLL)中的資源。

Classes 單元提供 InternalReadComponentRes 函數,利用 TResourceStream 從 Delphi 應用程式讀取元件。Delphi 將表單與元件資訊存放於模組資源的 RCDATA 區段。

20.1.7 TBlobStream 物件總覽

從 Delphi 資料庫開發平台角度看,TBlobStream 是極重要的物件,提供修改 TBlobField、TBytesField 或 TVarBytesField 資料的技術,讓開發者像操作檔案或串流一樣在資料庫欄位中讀寫資料。

多媒體資料庫趨勢與 BLOB 技術

傳統資料庫發展趨向多媒體資料庫,主流資料庫皆支援多媒體功能。多媒體資料結構不規則、量大,各大資料庫採用 BLOB 技術 解決儲存難題。TBlobStream 的意義在於:

  1. 讓 Delphi 應用程式充分發揮多媒體資料庫的資料管理能力。
  2. 結合 Object Pascal 強大的程式設計能力,為多媒體資料庫提供全方位功能擴充空間。

使用 TBlobStream 可在 BLOB 欄位儲存任意程式定義的資料格式,不受限於圖像、語音或 OLE 伺服器支援的格式,且無需輔助工具。

核心操作方法

  • Create:建立資料庫欄位與 BLOB 流的連結。
  • Read/Write:存取與修改欄位內容。
  • Seek:在欄位中定位。
  • Truncate:刪除目前位置起的所有資料。

20.1.7.1 TBlobStream 屬性與方法一覽

TBlobStream 直接繼承 TStream,無新增屬性。覆寫 Read、Write、Seek 實作 BLOB 存取,新增 Truncate 實作刪除操作。

1. Read 方法

function Read(var Buffer; Count: Longint): Longint;

從資料庫欄位目前位置複製 Count 位元組到 Buffer(需預先配置至少 Count 位元組)。回傳實際傳輸位元組數,可能小於 Count,需檢查邊界。

2. Write 方法

function Write(const Buffer; Count: Longint): Longint; override;

從 Buffer 複製 Count 位元組到資料庫欄位目前位置(Buffer 需配置足夠記憶體)。回傳實際傳輸位元組數,亦需邊界檢查。

3. Seek 方法

function Seek(Offset: Longint; Origin: Word): Longint;

重設 BLOB 流指標位置:

  • Origin = soFromBeginning (0):新位置 = Offset(≥ 0)。
  • Origin = soFromCurrent (1):新位置 = Position + Offset。
  • Origin = soFromEnd (2):新位置 = Size + Offset(≤ 0)。

回傳新指標位置。

4. Truncate 方法

procedure Truncate;

刪除 TBlobField、TBytesField 或 TVarBytesField 中從目前位置起的所有資料。

5. Create 方法

constructor Create(Field: TBlobField; Mode: TBlobStreamMode);

以 Field 參數建立 BLOB 流與欄位連結。Mode 可為 bmRead、bmWrite、bmReadWrite。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved