Delphi COM 伺服器元件實作 ShowCrossReport 詳解(一)
前言 承接上篇,本文展示 Delphi COM 元件 ShowCrossReport 方法的完整實作,涵蓋 ADO 查詢、FastReport 載入與準備、HT
Delphi COM 伺服器元件解決 Web 交叉報表(一)
前言 本文示範如何將 Delphi 報表邏輯封裝為 COM 伺服器元件,供 ASP.NET 呼叫,解決 Web 環境下的交叉報表需求。 報表模板 ASP.
Delphi FastReport HTML 導出至記憶體流解決方案(二)
前言 FastReport 的 TfrHtml2Export 預設只能導出至檔案。本文展示如何修改 OnEndDoc 事件,支援直接導出至 TMemoryStr
領域驅動設計實踐:流水號生成器數字序列實作詳解(上)
前言 本文詳細展開數字序列生成器 TNumbericSerialNumberGenerator 的介面定義、建構式與核心遞增邏輯實作。 類別介面 TNumbe
領域驅動設計實踐:流水號生成器基本生成器測試與實作(上)
前言 本文展示流水號生成器三個基本生成器的測試案例與任務清單,驗證數字循環、字母循環與常數代碼功能。 任務清單 支援可循環的數字序列(001–999)
領域驅動設計實踐:流水號生成器實作(上)
前言 本系列展示如何以領域驅動設計(DDD)建構一個可組合、可擴充的流水號生成器。上篇從測試驅動開發(TDD)切入,逐步實作數字、字母、常數等基本生成器,並組合
領域驅動設計實踐 — 流水號生成器 (上) (5) - 組合模式實現與測試通過
ISerialNumberGenerator 介面調整 ISerialNumberGenerator = interface function NextSe
領域驅動設計實踐 — 流水號生成器 (下) (2) - 領域分析與模型演進
編號規則領域知識 典型編號由固定代碼、流水號、日期段組成。日期變更時重置流水號。流水號規則可能複雜:數字 (0000-9999)、字母 (A-Z)、自訂字符集
領域驅動設計實踐 — 流水號生成器 (下) (3) - 客戶端使用範例與規則建構 API
客戶端測試代碼 procedure TTestNumberRule.TestCompositeNumber; begin fRule.AddCode(RK)
領域驅動設計實踐 — 流水號生成器 (下) (4) - 編號生成核心邏輯
TNumberRule.GetNextNumber 流程 function TNumberRule.GetNextNumber(const number: st
領域驅動設計實踐:流水號生成器實作(下)
前言 承接上篇,本文完成流水號生成器的業務應用層介面設計,提供編號取得、驗證、比較與統計功能,並示範資料庫實作輪廓。 業務應用介面 INumberGenera
Delphi 類入門範例 (7) - 遍歷表單所有父類別
逐層顯示父類別名稱 procedure TForm1.Button3Click(Sender: TObject); var MyClass: TClass; b
Delphi 語言學習 1 - Program 與 Unit (2) - 間接引用與嵌套引用
Unit 間接引用 program Prog; uses Unit2; const a = b; unit Unit2; interface uses Uni
Delphi 語言學習 5 - 函數與方法 (2) - 前向宣告、外部連結、函數重載
前向宣告 function Calculate(X, Y: Integer): Real; forward; function Calculate; ... {
Delphi 語言學習 6 - 函數參數 (2) - 非強類型參數與字串參數
非強類型參數 (Untyped Parameters) 以 var 參數接收任意型別資料,配合 Size 進行位元組級比較: function Equal(va
Delphi 語言學習 6 - 函數參數 (3) - 陣列參數、開放陣列、變體開放陣列與預設參數
靜態陣列參數需先定義型別 { 錯誤 } procedure Sort(A: array[1..10] of Integer); // syntax error
Delphi 語言學習 7 - 類與對象 (2) - 繼承、類型檢查與關聯
基類與子類關係 type TFigure = class(TObject); TRectangle = class(TFigure); TSquar
Delphi 語言學習 8 - 類成員:字段與方法 (2) - 函數重載與建構函數
函數重載與 reintroduce type T1 = class(TObject) procedure Test(I: Integer); ove