2014/07/30

[RegEx] Delphi XE 增加的 TRegEx 資料整理

原來從 Delphi XE 開始就有內建 RegEx 類別了,現在開始要重新學習了

看來是抄 M$ Framework 抄很大。哈!

有關錢字號「$」的說明:
C# Regular Expressions Substitutions (經常用在 Replacement 中)


2014/07/29

[DateUtils]查出指定時間的當月第一天和最後一天

突然有這樣的一個需求,上網查了一下發現很大一票的高手在這塊都自己刻一份副程式。

難道 VCL Framework 裡就沒有好用的函式可使嗎?

答案是:有的

EndOfAMonth in Delphi Basics 中有提到了我想要的東西。

在 DateUtils 裡有「StartOfTheMonth」和「EndOfTheMonth」這兩個函式,可以很輕鬆地取得指定時間的 1 號 和 28.29.30.31 的最末日

範例如下:
var
  vFirstDate, vLastDate: TDateTime;
begin
  vFirstDate := DateUtils.StartOfTheMonth(Now());
  vLastDate   := DateUtils.EndOfTheMonth(Now());
  ShowMessage('The Month first Date: ' + DateToStr(vFirstDate) + #13#10 +
              'The Month last Date: ' + DateToStr(vLastDate));



只是,按「易讀程式之美學」一書所建議的起始和最末範圍命名法則有點小小的衝突,
==============
Start → First
End → Last
==============
但因為不會有「32」日這種超出日期的可能,這種小缺點就忍耐一下吧 (笑)


2014/07/15

TDataSet.OnValidate 和 OnChange 事件使用心得

OnValidate:
  單純的檢查事件,在這個事件中無法對 Sender(TField) 進行改值。


OnChange:
  接在 OnValidate 事件後觸發,值的變更可在此事件中處理。

2014/07/07

State-Less? DataSnap for RESTful is easy!!!

在看了「Delphi XE2 DataSnap Development Essentials」元件章節後,才發現幾個很特別的屬性: