當然……
2016/10/24
雲端服務捉妖錄──REST DataSnap (上)
當然……
2016/09/02
中文版舊軟體的續命丹:【全字庫】
有些人事薪資系統在輸入 Unicode 字元。如:【堃、伃】等,往往會造成文字在存檔後變成各種問號【?】。
通常這時我們有兩種做法:
- 升級系統
- 自行造字
第一種作法一定要去找原開發商,而開發商也會給兩個答案
- 改,要錢
- 不改 (改不了)
所以一般小公司會選擇第二個作法。
身為最大受災戶的政府機關想必是首當其衝,於是有了官方解決辦法:【全字庫】
接下來當然是造福我們啦!
But!全字庫的安裝說明實在是……還是自己寫一份吧。
2016/08/26
Delphi 免寫 FreeAndNil 的方法
![]() |
| 好的 Free 帶你上天堂 (咦?) 圖片來源 |
最近看到一篇關於葡萄牙人寫的文章:FreeAndNil... Esqueça
內文是說明在物件導向的時代,JAVA、C# 這類的語言都有垃圾自動回收機制,進化中的 Delphi 其實也有。
接著便開始說明了使用 FreeAndNil 讓我們的原始碼非常噁心的經過。
提出的解法是使用 Interface!
原先我們的寫法可能是:
2016/08/19
泛型(Generic)容器的小技巧
![]() |
| 泛型 (Generic) 是程式毒藥還是解藥? 圖片來源 |
在Delphi 2009開始便加入了【泛型容器】相關類別,如下所列:
- TList
,TObjectList - TQueue
,TObjectQueue - TStack
,TObjectStack - TDictionary
,TObjectDictionary
不過也只知道可以放像是「string, Integer, TComponent」等,基本型別或是物件都可以自由宣告使用。
乍看下和 TStringList 重疊率很高啊,如果是宣告TList
- CommaText
- DelimitedText
不能用這兩個常用率特高的函式感覺很廢啊。泛型容器到底有什麼好用的?
一直到需要放置物件時,才開始覺得泛型容器超好用。
2016/08/12
[整理]如何計算出一個字元,在一個字串中出現的次數
作者:吳祐賓
字元(Char)計數
原理:步進對字元計數
// D10 after
function OccurrencesOfChar(const S: string; const C: Char): Integer;
var
Ch: Char;
begin
Result := 0;
// 使用 for-in 迴圈遍歷字串,語法更現代且安全
for Ch in S do
begin
if Ch = C then
Inc(Result);
end;
end;
// D7 or Lazarus
function OccurrencesOfChar(const S: string; const C: char): integer;
var
i: Integer;
begin
result := 0;
for i := 1 to Length(S) do
if S[i] = C then
inc(result);
end;
// Example:
//var LNum = OccurrencesOfChar('Banana', 'a');
//Result LNum is 3
字串(String)計數
function Occurrences(const Substring, Text: string): Integer;
var
Offset: Integer;
begin
Result := 0;
// 防呆處理:如果子字串為空,直接返回 0,避免無窮迴圈
if (Substring = '') or (Text = '') then
Exit;
// 尋找第一個匹配位置
Offset := Pos(Substring, Text);
while Offset <> 0 do
begin
Inc(Result);
// 從「當前位置 + 子字串長度」繼續往後搜尋
// 使用 Pos 的起始偏移量參數 (Offset + Length)
Offset := Pos(Substring, Text, Offset + Length(Substring));
end;
end;
// Example:
//var LNum = Occurrences('an', 'Banana');
//Result LNum is 2
資料來源:
2016/07/12
2016/07/05
IntraWeb 學習日記:【TIWTabControl】
為了要實作像 Win32 Form MDI 那樣的程式,我們可以借用 IntraWeb 的 TIWTabControl 來實現多支程式的執行。
實務操作起來也不是很難,雛形大概會長成這樣:
實作程式碼如下:
實務操作起來也不是很難,雛形大概會長成這樣:
實作程式碼如下:
訂閱:
文章 (Atom)



