2014/12/25

Devart UniDAC 和旗下的專用DAC 有何不同?

UniDAC 屬萬用型,各式資料庫都可以使用,但不支援資料庫 API

專用DAC,如 PgDAC, MyDAC, IbDAC 等,只支援其特定資料庫 (但 IbDAC 同時支援 Interbase 和 Firebird 兩種),支援直接連線 (Direct Connect) 和 API (如備份功能) 是其特色。

2014/12/11

Delphi XE 新特性 -- SplitString

官方手冊上是這麼寫的:

這個功能和 TStringList 的 Delimiter 有重疊,但卻少了 Create 和 Free 的動作,在程式寫作上會更為方便。
這也是從 .NET 上學習過來的,就使用它的範例吧:
procedure TForm1.Button1Click(Sender: TObject);
var
  vText: string;
  vStrArray: TStringDynArray;
  vPos: Integer;
  vStrList: TStringList;
begin
  vStrList := TStringList.Create();
  vText := 'there is a cat';
  vStrArray := StrUtils.SplitString(vText, ' ');
  for vPos := 0 to Length(vStrArray)-1 do
    vStrList.Add(vStrArray[vPos]);
  ShowMessage(vStrList.Text);
  FreeAndNil(vStrList);
end;

回傳結果:

比較要注意的地方是,Delimiters 參數雖然是 String 但只接受一個字元的內容。
如果超過兩個字元,會得到無法預期的結果。


2014/12/02

Indy 操作 SMTP 發生 "Could not load SSL library"?

在 Indy 操作 SMTP 時,Delphi 跳出「Could not load SSL library」的訊息。

去 Win32 OpenSSL 網站下載個 「Light」版來安裝,就能解決這個問題了!

另外,這個網站有更詳盡的解說:"Cannot load SSL Library" using Delphi XE7

2018/05/04 更新:
要取得編譯給 Indy 用的 SSL 檔案才行。連結置於「延伸閱讀」裡。

延伸閱讀:

2014/11/28

線上編譯器 -- CodingGround 介紹

CodingGround 是一個給程式人員方便使用的線上編譯網站,內含 IDE + Linux 系統。
不論是初心者學習,或是臨時想到什麼語法時,很容易就能在這個網站上測試使用。

更棒的是,不需要註冊就可以使用!

來看看這個網站提供哪些語言吧:


幾乎囊括了所有(含曾經)熟門的語言,給有潔癖的軟體開發人員一個不一樣的 Coding 選擇!

大致上分為:
  • Text Technologies
  • Database Programming
  • Programming Languages

試用一下效果還真的不錯!
這下練程式就不用裝好多套 IDE ,太好了!

網址在這兒

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: