Translate

ebook【Delphi跨平台資料庫程式設計火速上手】電子書出版 (CHT)

Delphi 跨平台資料庫程式設計火速上手,是本關於整合 Delphi 的跨平台技術打造 2-Tier 架構的跨平台 APP 的入門技術書。 全書沒有需要理解的技術知識,只講套路。 力求短時間把製作 APP 的工法熟悉,未來要開發其它的應用程式也能舉一反三。 底下...

2018/04/07

About New Threads On FMX For Android (CHT)

在 Delphi Tokyo (10.2) 後,Delphi UI 的 Thread 在 Android 下發生了一點變化,原文如下:

Unification of Delphi and Java threads on Android: CallInUIThread has been deprecated. All code is now running in the Java UI Thread, removing the need for thread synchronization.
由此可推斷出,以前 FMX 在 Android 的運作模式如下:

FMX for android in  before Delphi 10.1

因為 Delphi UI Thread 是基於 Java UI 之上,使用者操作 Java UI 層時,還需要經過 Delphi UI 層的同步處理才能觸發 Delphi 物件的相關事件,故效能和原生的 Java App 相比下會來得差一點。


而在 10.2 之後,不再是雙 Thread 並行,除了執行效能有顯著提升外,連 FMX 在 Android 平台都【自動升格為 Thrad safe 】了!



但問題來了,這種底層架構的調整,對於 FMX for Android 舊版本專案會有影響嗎?

答案很明顯的……



















一定有!但不大

問題不大的原因在於,絕大多數的開發方式並不會使用到 Thread,也就是說,UI 層的問題在編譯程式時就已經解決了。

而最大的問題在:邏輯層面的 Bug。

既然是 Thread 層的修正,那問題一定也會出在 Thread 上。

首當其衝的當然就是『3rd party』了!(笑)



FGX-FireMonkey】的範例就有用上 Thread (TfgActivityDialog, TfgProgressDialog),相當經典,但在 10.2 時卻會發生元件畫面無法出現的問題。

相同的程式碼在 10.1 以前的程式流程是這樣的:

TfgAD = TfgActivityDialog

如果程式碼不改變的情況,在 10.2 後『純 Java UI Thread』下的流程會是這樣:



於是 TfgActivityDialog 自然就看不到囉!(笑)


結論
FMX 還是一個年輕且在成長的框架,所以每當底層架構有所變化時,都要檢視一下自己的專案是否會因改版而必須有所更動,每一個版本的 What's New 內容非常重要,務必好好研讀。

其實上圖之所以會有這個問題不是 FGX 作者的問題 (就算是,作者也不再維護了……),主因還是會回到 Thread 控制根本上的不同,隨著架構的變化而重構專案程式碼才會是最佳解。



See also:


2018/02/26

使用 ZXIng 試作 QRCode (CHT)

Photo from Thinkstock
QRCode 在行動裝置上有【規格一制性】的特色,Barcode 一整個被比了下去。

而在 Delphi 平台上也常遇到有人在問 QRCode 要怎麼繪製,一直到最近在 KTOP 才出現一個比較正式的回答。

核心的方案是 DelphiZXingQRCode,它採用的是【Apache 2.0】的授權,不僅免費,連商業使用都沒問題,實在是太佛心。

2018/02/13

XLSX 檔案格式除錯 (CHT)

最近同事傳來一個轉檔為 xlsx 後出現的一個錯誤,訊息大致如下:
【Excel 發現無法讀取的內容 您是否要回復此活頁簿內容...】

修正後,會取得以下的資訊:

2018/01/20

JSON build and parser with C++ Builder (CHT)

圖片來源

開始學習網頁技術後,大致上都在 JSON 上面繞圈圈。

由於 C++ 本身沒有相關的函式庫,所以必須要找 3rd library 加以載入後才能使用。

然而 Delphi 已經有提供 JSON Framework,想必 C++ Builer 也一定會有,問題在於……





2017/12/25

JavaScript 動態載入 JavaScript (CHT)

在載入 ExtJS 這種大型 JS 框架時,如果 Client 端網路速度不夠快,在首次載入時會空白畫面等很久,為了讓用戶端有更好的體驗,所以還是要有個進度條來刷個存在感,如此一來用戶也比較願意在自己的網站停留比較久的時間。

以下是程式碼範例:

2017/12/08

dbExpress ODBC Connection String with XE2 above

New ODBC driver for dbExpress in XE2.

You can setting DSN in Data Source (ODBC).

If you want create DSN-less connection, you can to setup ConnectionString in TSQLConnection.params.

The connection string like below:
SQL Server:
VendorLib=odbc32.dll;DRIVER={SQL Server};UID=vadim-l;PWD=lopes;SERVER=GERALT.YDOM;DATABASE=DW_Data_NT

MS Access:
VendorLib=odbcjt32.dll;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=Your.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=17;coSafeMode=1

See also:

2017/12/05

免費、可商業使用的 Delphi 和 C++ Builder Tokyo 介紹及下載教學 (CHT)


之前提到過【免費、可商業使用的 Delphi 和 C++ Builder Berlin 介紹及下載教學

最近在 EMBT 推出 Tokyo 10.2 後,又再一次想來體驗看看。

安裝方式都差不多,就不再多重複說明,但要注意的地方是:

安裝時會發生 Operation Error 的問題,如下圖: