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

C++Builder 流物件完整指南:繼承體系、核心類別與應用場景全解析

     編輯:關於C++

C++Builder (CB) 提供豐富的流物件體系,以統一介面操作檔案、記憶體、字串、Socket、資料庫 Blob、OLE、資源等異構資料源。本文系統梳理繼承階層、核心類別介面、關鍵輔助類別與實戰應用模式。

流物件繼承階層

TObject
  └─ TStream (抽象基類)
       ├─ THandleStream
       │    └─ TFileStream
       ├─ TCustomMemoryStream
       │    ├─ TMemoryStream
       │    └─ TResourceStream
       ├─ TWinSocketStream
       ├─ TBlobStream
       │    └─ TClientBlobStream
       ├─ TOleStream
       └─ TStringStream

核心抽象基類:TStream

分類成員說明
屬性Position目前讀寫位置 (位元組偏移)
Size流總大小 (位元組)
方法Read/ReadBuffer讀取資料到緩衝區,Buffer 版失敗拋出例外
Write/WriteBuffer從緩衝區寫入資料
Seek定位 Position (soFromBeginning/Current/End)
SetSize調整流大小
CopyFrom從另一流複製指定位元組數
ReadComponent/WriteComponent元件序列化/反序列化
ReadComponentRes/WriteComponentResWindows 資源格式元件序列化

注意:TStream 為抽象類,不可直接實例化。

主要具象類別詳解

TFileStream — 檔案流


TFileStream *fs = new TFileStream("c:\\boot.ini", fmOpenRead | fmShareDenyWrite);
// 完整支援檔案模式旗標:fmCreate, fmOpenRead, fmOpenWrite, fmOpenReadWrite, fmShareExclusive...

TMemoryStream / TCustomMemoryStream — 記憶體流

  • Memory 屬性:直接存取內部記憶體指標
  • LoadFromFile/Stream、SaveToFile/Stream、Clear、SetSize
  • TResourceStream 繼承此類,唯讀存取 EXE/DLL 資源

TStringStream — 字串流

  • DataString 屬性:直接存取內部 AnsiString
  • ReadString/WriteString 便利方法
  • 適合字串處理管線、文字協議解析

TWinSocketStream — Socket 流 (阻塞模式)

  • 建構式:new TWinSocketStream(Socket, TimeoutMs)
  • TimeOut 屬性:讀寫超時控制 (毫秒)
  • WaitForData:等待資料可讀/可寫,避免阻塞掛起
  • 適用於執行緒中同步 Socket 通訊

TBlobStream / TClientBlobStream — 資料庫 Blob 流

  • 建構式綁定 TBlobField:new TBlobStream(BlobField, bmRead/bmWrite/bmReadWrite)
  • 關鍵:資料集游標移動時必須重建流物件
  • Truncate:從目前位置截斷
  • ClientDataSet 專用 TClientBlobStream

TOleStream / TResourceStream

  • TOleStream:封裝 OLE IStream 介面
  • TResourceStream:唯讀存取 EXE/DLL 資源 (RT_BITMAP, RT_RCDATA 等)

輔助類別與函數

  • TReader / TWriter:ReadComponent/WriteComponent 內部實作引擎
  • ObjectTextToBinary / ObjectBinaryToText:元件文字/二進位格式互轉
  • ObjectTextToResource / ObjectResourceToText:資源格式互轉

四大應用場景

  1. 統一資源存取:同一組 Read/Write/Seek API 操作檔案/記憶體/Socket/Blob
  2. 跨媒介持久化:元件 → 檔案/記憶體/資源 雙向序列化
  3. 簡化複雜操作:TBlobStream 封裝資料庫長欄位讀寫細節
  4. 實現困難功能:TWinSocketStream 解決阻塞 Socket 超時控制

實戰範例:元件序列化到檔案


TFileStream *fs = new TFileStream("form.dat", fmCreate);
try {
    fs->WriteComponent(MyForm);  // 將表單及子元件完整序列化
} __finally {
    delete fs;
}

// 還原
TFileStream *fs = new TFileStream("form.dat", fmOpenRead);
TForm *restored = new TForm(Application);
fs->ReadComponent(restored);

掌握 CB 流物件體系,能以極低認知負擔處理各類資料流向轉換,是資料庫、網路、檔案、元件持久化開發的核心基礎設施。

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