Truncate 方法透過呼叫 BDE API 函數 DbiTruncateBlob 實作,其核心程式碼如下:
procedure TBlobStream.Truncate;
begin
if FOpened then
begin
Check(DbiTruncateBlob(FDataSet.Handle, FRecord, FFieldNo, FPosition));
FModified := True;
end;
end;
此方法會從 BLOB 流的目前位置開始刪除所有後續資料,並將修改旗標 FModified 設為 True。在 Delphi VCL 中,許多資料庫元件(特別是 Data Access 與 Data Control 類別)皆以 BDE API 函數為基礎封裝而成,簡化了資料庫存取操作。BDE API 更提供繞過 BDE 設定工具、直接在程式中管理 Alias(建立、修改、刪除)的函數支援,這在 Delphi 資料庫應用程式的安裝部署中極為重要。詳細的 BDE API 函數說明請參閱 Delphi 2.0 Client/Server Suite 附帶的 BDE API 線上說明文件。
讀寫物件包含 TFiler、TReader 與 TWriter 三個類別。TFiler 是檔案讀寫的基底類別,實際應用中主要使用 TReader 與 TWriter,兩者皆直接繼承自 TFiler。TFiler 定義了 Filer 物件的基本屬性與方法。
TFiler 是 TReader 與 TWriter 的抽象類別,定義了元件儲存所需的基本屬性與方法。其中 Root 屬性指向被讀寫元件樹的根物件;建構子接受 Stream 物件作為參數,建立與串流的關聯,實際讀寫操作由 Stream 物件執行。因此,任何 Stream 物件可存取的媒介,皆可透過 Filer 物件進行元件存取。
TFiler 另提供 DefineProperty 與 DefineBinaryProperty 兩個方法,使物件能讀寫未定義於 published 區塊的屬性。
DFM 檔案用於儲存 Delphi 表單。表單是 Delphi 視覺化設計的核心,對應應用程式視窗;表單上的視覺元件對應介面元素,非視覺元件(如 TTable、TOpenDialog)對應特定功能。Delphi 應用程式設計以表單設計為中心,故 DFM 檔案佔重要地位,包含表單本身及所有元件的屬性值。
視窗介面元素以擁有關係(Ownership)串聯,自然形成樹狀結構;表單元件同樣以樹狀組織,DFM 檔案邏輯上亦以樹狀結構表達此關係。DFM 實體以二進位儲存,但 Delphi 編輯器支援以文字模式檢視。以下為 DFM 文字表示範例:
object Form1: TForm1
Left = 72
Top = 77
ActiveControl = DBImage1
...
object Panel1: TPanel
Left = 6
...
object DBLabel1: TDBText
...
end
object DBImage1: TDBImage
...
end
end
object Panel2: TPanel
Left = 6
...
object Label1: TLabel
...
end
end
object Panel3: TPanel
Left = 6
...
object DBLabel2: TDBText
...
end
end
end
關於 DFM 儲存屬性值的規則,請參閱「自訂元件開發」章節。
Root:元件樹的根節點(即表單)Ancestor:根節點的祖先物件IgnoreChildren:讀取元件時忽略根節點的子節點許多 Filer 方法皆以 Root 為起點遍歷整棵元件樹。