2014/10/24

UML Pad 設計 UML 的簡易工具,或許也可以拿來這樣用

UML Pad 是一套免費、免安裝且易用的 UML 繪圖工具,在不考慮輸出成真正原始碼時,是個可以上手的好工具。

而我,因為臨時要畫出跨部門的文件流程,使用這套工具畫了一個簡單的循序圖:
跨部門的請採購流程
 是否算得上簡單明瞭呢?

2014/10/17

Delphi 的四捨五入方法

Delphi 以往的「四捨六入五成雙」 -- Round
要改成常用的「四捨五入」,坊間有一大票使用很彆扭的方式來達成。

但 Delphi 的 Math 單元早已經有這樣的函式了:

Math.SimpleRoundTo

可是這樣的命名規則很不討喜,所以我們可以再重新封裝一下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
uses
  Math;

function RoundA(A_Float: Extended): Integer; overload;
begin
  Result := Trunc(Math.SimpleRoundTo(A_Float, 0));  // 取整數部分即可
end;

function RoundA(A_Float: Extended; A_Digit: Integer=-2): Extended; overload;
begin
  Result := Math.SimpleRoundTo(A_Float, A_Digit);
end;

2014/10/06

溫習 RAD Studio 各個版本新增的內容

很好奇每個版本間到底有什麼差異,把 HELP 的連結貼過來,方便溫習。

What Was New in Past Releases


底下是個人筆記重點:
===========================================

2007 Add:

dbExpress 系:

  • Driver 最佳化。
  • Driver 增加部份對資料庫的 Unicode 支援。(但 VCL UI 元件還不支援 Unicode,白搭)

RTL 系:

TFileOpenDialog, TFileSaveDialog, TTaskDialog:
但這些都是 Vista (含以上) 限定, XP 以下不工作。

TTaskDialog 畫面很漂亮!學習資料:

其它新增的類別大都是為了上述元件產生的。
==================================

2009 Add:

DataSnap 系:

  • 基於 Indy 的 TDSxxx 元件,所做出的 RESTful 框架。(Base WinHTTP)
  • 納入 Blackfish 資料庫 ($$$)。

RTL 系:

  • 正式導入 Unicode
  • 增加更多的 UI 元件。如:Tiburon 和 Ribbon
  • 改變 TDataSet.Bookmark 的方法
  • 因應 GlyFx 而增加的單元: PNG = pngimage; Gif = gifImg; Jpg = jpeg ← 超重要!
==================================

2010 Add:

IDE 最佳化。

DataSnap 系:

  • 提供 MIDAS DLL 的原始碼。
  • 強化 RESTful 框架。

RTL 系:

  • 增加 RTTI 單元。
  • 增加支援平板的 手勢、 Touch 功能。
  • 重製 .NET: TStringBuilder 元件在 RAD Studio 上。
  • 新增的元件 Bug 修正和補強。
==================================

XE Add:

Blackfish 死掉了。

IDE 增加 Code Formatting 功能,終於可以自動化編排原始碼了。
Code Editor 強化了許多功能和樣版(Live Templates)。大推!

DataSnap 系:

  • 持續增強 RESTful 框架,並加強 dbExpress 對 JSON 的支援。

RTL 系:

  • 增加 IOUtils 單元。
  • TStrings 加入 TEncoding 初始化功能。
  • 加入一票 3rd 函式庫;如:RegularExpressions、Boots 等。
  • TThread.Suspend 和 Resume 被刪除了,新的使用方式請詳閱公開說明書。
  • C++ VCL 增加了對 Unicode 的支援。

消化完再走到下一版。

XE7 Add:


    2014/09/10

    淺談協調者模式[Mediator Pattern] - 使用 Delphi + Interface

    在「深入淺出-設計模式」一書中談到「居間協調者模式」時,把它歸類在不受設計人歡迎的模式中(請參閱:14 附錄:剩下的模式-居間協調者模式)。

    只是,它有提到在 MVC 中經常會使用這個模式來設計。看了下它的介紹,就真的是簡短到一個極致。

    接著便拿起「參悟物件設計模式 - 使用 Delphi」一書,翻到了「協調者模式」一節。

    ……還是有點難理解,按本人羸弱的思考能力是這樣解讀的:

    2014/09/01

    淺談策略模式[Strategy Pattern] - 使用 Delphi + Interface



    用 Delphi 這麼久,Class 一直都是我愛用的關鍵字之一。
    在看了 Code in Delphi 之後,還是不了解為什麼要使用 Interface。

    於是又看了下 Head First Design Patterns (深入淺出設計模式) 的第一章。

    按照我現在只會的物件導向概念,在鴨子類別及實體的設計,大概會長成這樣:

    2014/08/27

    RAD Studio XE7 其它亮點

    Pull to refresh in TListView.
    OnGesture 和 OnTouch 事件終於切開了!再也不會誤觸 TEdit 而拉不動了!
    TScaledLayout 上的元件會自動隨解析度調整大小。(不過裡面有 TWebControl 時會有相容性問題)


    2014/08/22

    FireMonkey 核心 -- LiveBinding

    LiveBinding 幾乎完美發揮泛型的優點。
    不須再使用 IntToStr, FloatToStr 等轉換函式。

    TBindingsList.Notify             ← 配合已綁定 Class 事件呼叫時可用。
    TBindExpression.Evaluate   ← 應用上,只要記得 BindExpression 是讓哪個 Class 作動即可。