2019/09/23

Auto set up the TDBXParameters DataType

圖/VManninen@flickr


好消息! dbExpress driver 增加對 Linux 平台的支援!

緣起


本以為 dbExpress 不再更新後就要比 BDE 提早領便當,成了史上最悲劇的官方資料庫存取技術代表。

然而在 Devart 的巧手下,2019年又讓 dbExpress 再一次跨好跨滿跨平台。❤❤❤

聽到這個消息超開心的,2002 Borland 時期 Kylix的未竟之夢,總算在 2019 由 Idera / Embarcadero 圓夢完成,真是太感動了!

感動之餘,也想到 DataSnap 轉到 Linux 主機上,是否應該作些準備?

前面提到的【DevExtreme DataGrid Demo with DataSnap Server】章節,已經知道前端要採用與 Delphi 無綠的 JavaScript 應用,而前端最常用的 TClientDataSet / TFdMemTable 也就不會再使用,面對 JavaScript,最終是要包成 JSON。

既然不會再使用 Delphi 前端元件,那資料庫來源在不妨礙開發為前提下能多底層就底層。


有想法,就來試試看!

2019/09/20

DevExtreme DataGrid Demo with DataSnap Server - The Front End

資料來源:網路


前面提到 DevExtreme DataGrid Demo with DataSnap Server 1 + 2,已經知道 DevExtreme DataGrid 是如何向後端伺服器取得資料,其它的『新增』、『更新』、『刪除』要如何實作呢?

在實作之前,要先知道 DataGrid 是如何動作的。

2019/09/11

DevExtreme DataGrid Demo with DataSnap Server 2/2

DataSnap 是 Delphi Enterprise 中極好用的 framework 之一!

隨著行動平台的使用人數提高,漸漸也就有了跨平台的需求。

商城上架費太貴、各平台開發的眉眉角角太多。



說白了就是想一套產品通吃各平台。

能滿足所有條件的只有 Web 了!

其實 Web 的水更深,箇中奧妙待日後細說。(笑)


上回提到 DataSnap REST Server 可以提取跨網站資料。

這篇有幾個目標:

2019/09/10

DevExtreme DataGrid Demo with DataSnap Server 1/2

DataSnap 是 Delphi Enterprise 中極好用的 framework 之一!


使用 Delphi 開發時大多遇到的都是資料庫應用,而其中 3rd party 最常用的就是 DevExpress 的 cxGrid 元件,導致在開發 Web 平台時也需要無痛移轉,使用者就是愛 cxGrid,所以在平台移轉上困難重重。

而 DevExpress 的明日之星【ExpressWeb Framework】卻早已停止開發! (已哭)

取而代之的是 ASPx 套件和 純 HTML5 的 DevExtreme framework。(喔氣氣氣氣氣氣!)

ASP.NET 套件試用好一陣子,不僅僅要熟悉 Dx 元件,再加上 ASP.NET C# 技術知識,別忘了還有前端的 HTML / CSS / JavaScript 的知識要學習,一個人的工作量也太大了。



在絕望之餘,才發現 Delphi 新版的 DataSnap 已經內建了 JavaScript framework,使用上也不算太困難,就差在前端 HTML 必須自行開發。

所謂的 JavaScript framework,意謂著前端的功能也必須使用 JavaScript 進行開發,當然也是有優缺點:

2019/09/03

Script Engine in Delphi


圖片來源:網路

系統維護一段時間之後,總會遇到各式各樣的需求,哪怕是改字改公式這樣的小需要,都必須把專案修改後重新編譯以及發佈這樣的改版模式,才能讓使用者順利使用。

『如果有一套語言引擎嵌入到系統中,我只需要改腳本就能夠無痛更新。』

這樣的念頭在我腦海中出現,有想法就來試試看。

在開始之前,自造輪子不如使用輪子,來看看 3rd party 有沒有好用的函式庫可以使用,如果有就不需要再重新寫起。

2019/07/18

ADO in Web application for Delphi


主題雖然說是 ADO,其實泛指利用操作COM*的資料庫 Driver 皆適用,例如:使用到 OleDB / SQL Native Client 的 dbExpress、Devart DAC、FireDAC 元件等。

*元件物件模型英語:Component Object Model,縮寫COM

Delphi 在 Web Application 開發會使用到 Thread,所以使用 COM 技術時,必須要使用 CoInitialize / CoUninitialize 來避免存取錯誤。

使用時機通常是伴隨著 Method 開始和結束,例如:

procedure Method;
begin
  CoInitialize(nil);
  ...
  CoUninitialize;
end;

每一個 Method 要設定也太累人,總是想找個簡易的作法,運氣不錯,一找就看到有意思的作法,高手連結在此

WebModule的【BeforeDispatch】和【AfterDispatch】事件主要控制 Method (Action) 的起始和結束,所以我們可以分別加入 CoInitialize 和 CoUnitialize,如此一來便可以少寫很多的程式碼。

文中的 CGI 模式也可以套用到 Windows Service 專案中,真是長知識了!


See also:

2019/06/26

Delphi ICS 在 WinXP 下的使用

ICS 全名為【Internet Component Suite】,和 Indy 齊名的網路元件組之一。

最近證交所網站開始轉用 TLS 1.2,這意味著加密等級上限是 TLS 1.1 的 WinXP / Win2003 系統已經無法再用 IE 取得資料,Indy 同時也受限於此,然而因為這個原因全面將公司內所有系統升級是不切實際的。(升級,公司會倒)

那怎麼辦?

雖然 IE 不能連結證交所,但 Firefox 可以,既然 Firefox 可以,那麼就一定有可以連線的方式。

有想法就開始吧,立馬下載 ICS 來使用。結果:


































hmm... 出錯了

找不到【bcrypt.dll】,這個檔案是新版 OpenSSL 呼叫 CryptoAPI 裡的 BCryptGenRandom 函式時所必須使用的檔案,而該檔案到了 Vista 才開始提供,因為系統版本不符,所以【把 bcrypt.dll 檔案移殖到 WinXP】這個邪惡的念頭只能放棄不予採用。

新版 OpenSSL 的版號呢?

ICS v8.58 附帶的 OpenSSL 是 1.1.1.0,而上個版次的 ICS v8.44 附帶的 OpenSSL 則是 1.1.0.5。


至於替換的結果,就請想試的紳士們體驗一下囉!


See also: