Skip to Content

Embarcadero

解決 Embarcadero C++ Builder 10.2 頻繁出現 LME200 Unable to perform link 的錯誤

今天編輯程式,不斷出現這個問題。

[ilink32 Warning] Warning: Error detected (LME200)

[ilink32 Error] Error: Unable to perform link

這問題其實在好一陣子之前已經出現過,當時的解決方法是把 C++ Builder 和我寫的程式目錄都設為防毒程式的白名單,就沒有這個問題了。

後來的日子,偶爾還是會出現,但有時重新編譯二、三次,問題就不見了。因此也沒有特別去管它。

*** *** ***

今天情況有點不同,出現次數非常頻繁,多到讓我受不了,無法再寫程式,只好上網求助 Google 大神。

有人提到一個方法,它說在這個目錄下 

C:\Program Files (x86)\Embarcadero\Studio\xxx\bin

找到 ilink32.exe

按滑鼠右鍵選內容 -> 相容性 -> 相容模式 ,選擇相容於 Windows 7

另外還建議把 ilink32.exe 設定成以系統管理員身份執行,同時  C++ Builder 也用系統管理員身份執行

一開始我只用相容 Windows 7 就解決問題了。結果正在寫本文時,重新測試,突然發現上面三種方法都用也不行了。(悲哀 sad)

再來找其他方法吧 .....

自己寫一個 GUI 版 C++ Builder 單元測試

最近在寫一個較大的專案,而且要能在 Windows 和 Mac 上執行(Android 和 iOS 以後再考慮),加上第一次用新版 C++ Builder 跨平台的版本寫大專案,所以凡事起頭難,這也是第一次想加上單元測試,以利後續檢查與驗證。

C++ Builder 上面宣稱已有跨平台版本的 DUnitX,詳見如下:

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/DUnitX

主要方法是在 __published 的宣告範圍內寫下要測試的程式,然後自行把每一個測試程式寫進去,執行時就會逐一執行測試程式,最後把結果列出來,如下圖。

用 #ifdef 判斷作業系統

在程式中若是要因應不同的作業系統而有不同的內容,則可以用底下的方法來處理。

#ifdef _Windows

….. (windows 下的程式)....

#endif

底下是目前在 C++ Builder 實際試出來的。

Win32 下有

_WINDOWS_
_Windows
WIN32
_WIN32
__WIN32__
(注意 : 這個在 Win64 沒有)

Win64 下有

_WINDOWS_
_Windows
WIN32
_WIN32
_WIN64

後來在這裡有查到一些,但沒有我測試的完整

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/WIN32#win32

看來判斷 Windows 可用 _Windows

Win32 則用 __WIN32__

Win64 則用 _WIN64

Android 則用 __ANDROID__

Mac 和 iOS 則用 __APPLE__

32位元手機則用 __arm__

64位元手機則用 __arm64__

 

利用以上去組合,應該就可以判斷了。

將 TWebBrowser 設定成 IE 11

C++ Builder 不管是 VCL 或 FireMonkey,都有 TWbeBrowser 元件。在 Windows 系統下,該元件就是一個內嵌的 IE。

其實我很想不要用 IE,希望找到內嵌的 chrome 元件,但目前找到的好像不是很好處理,也擔心日後升級問題,所以在 Windows 下還是暫時先以 IE 為主。

查了說明文件,指出內建的 TWebBrowser 預設的版本是 IE 7。所以我寫了一個很簡單的程式,用 FireMonkey 版的 TWebBrowser,直接連到一個 HMLT5 的網頁

https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video

這個網頁我在 IE 上測試,要 IE 11 才能順利執行。

底下是我的測試程式執行結果,可以看到就是沒有什麼結果。

C++ Builder 處理 3D 物件及動畫

3D 物件程式

參考:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/FireMonkey_3D

C++ Builder 可以處理 3D 程式,主要方法簡述如下。

1. 若要能直接放 3D 物件,一開始就要選 3D Application。

2. 若不是在  3D Application 的程式中想加入 3D 的物件,要先加入 TViewport3D 元件,才能在裡面放 3D 物件。

3. 反之,如果要在 3D Application 放 2D 元件,就要先放 TLayer3D 元件,才可以在裡面放 2D 元件。

在 Win10 用 VMware Workstation Player 12 安裝 Mac OS X 10.12 Sierra 和開發 c++ 程式

在 2015 年 10 月左右,我在 Win7 上試著用 VMware 安裝了 Mac OS X 10.10 Yosemite。(詳見此頁)

在 2016 年 11 月左右,我用 Embarcadero C++ Builder Berlin Update 2 試用版試著撰寫 Mac 版的程式,Mac 的環境就是上面提到的 10.10 Yosemite。(詳見此頁)

如今作業系統已換成 Win10 專業版,單位也買了正式版的 Embarcadero C++ Builder Berlin Update 2,所以打算重頭安裝最新版的 Mac OS X 10.12 Sierra,以期能用最新的環境來測試程式。

以下是工作環境:

作業系統:Microsoft Windows 10 專業版
開發程式:Embarcadero C++ Builder Berlin Update 2 專業版
虛擬程式:VMware Workstation Player 12.5 ( 此處可下載 )
VMware 支援 Mac 程式 : unlock208 ( 此處可找到相關資料 )
Mac OS X 虛擬檔案:Mac OS X 10.12 Sierra ( 別人準備好的版本 )
Mac 下的開發程式:Xcode v8.2.1 ( Mac App Store 可以安裝 )

請注意,我們不知道這個由別人安裝好的系統裡面究竟有沒有藏什麼病毒、後門等東西,所以千萬不要拿來做重要的事情,只能拿來做些測試。如果要做重要的事,請找正確的管道來安裝 Mac OS。

使用 C++ Builder 產生 Mac 版程式

 
本文是要說明如何在 Windows 上執行 Embarcadero C++ Builder (它的前身就是 Borland C++ Builder, BCB),並且產生 Mac 版的程式,讓程式可以在 Mac 上執行。
 
因為幾年前好不容易測試成功過,如今又要重做一次卻忘了流程了,所以才想到要記下來,免得日後自己又忘掉,也可以給第一次做的人參考參考。
 
手中雖然有一台公司的 MacBook Pro,不過裡面的 OS X 是 10.6,這個版本太舊了,至少要 10.8 才能開發。所以我採用虛擬主機中的 Mac OS X 來測試,好處是不用二台機器,缺點當然是效率不好,不過若不是常常需要編譯 Mac 版,應該還可以接受。
 
以前看李維大師演講時,他是在 Mac 中跑虛擬主機 Windows ,然後在 Windows 中執行開發程式,可以想像這就更慢了,因為主要的工作都在虛擬機中執行,而這個方法也是官方建議的方法之一。
 
在 Mac 中也要安裝 Xcode,這是 Mac 下的開發程式,整個原理應該是 C++ Builder 把程式先轉成 Xcode 可以編譯的資料,然後透過連結的程式,請 Xcode 把程式編譯出來,這樣就有可以在 Mac 下執行的程式了。
 

Embarcadero RAD Studio XE2 連結 MS Access 資料庫

 

前言

ADO 處理 MS Access 還是最方便,可以連結 ODBC,也可以直接連 mdb 檔案,在 DBGrid 等資料庫感知元件中讀寫 Unicode 都很順利。

BDE 是利用 ODBC 來連結 MS Access,可以直接讀寫 DBGrid,但目前測試結果只能處理 Big5 字集,不知如何讓它支援 Unicode。

dbExpress 也是利用 ODBC 來連結 MS Access,因為 dbExpress 取消了緩衝記憶體的使用,雖然效能有提昇,但也多了一些限制,例如沒有支援編輯,因此它不能直接連結 DBGrid 等資料庫元件。若要使用,就要搭配 TClientDataSet 及 TDataSetProvider 來連結,而且也只能讀取資料,不能寫入。

總結來說,若要和 MS Access 搭配,ADO 還是最方便的工具。

說明一下,底下提到 Table,是指 TTable 元件,提到 Table1 (後面有數字)則是指該 TTable 元件的名字,其他元件依此類推。

 

訂閱文章


about seo