2015年9月30日 星期三

更新工具到C++Builder10 Seattle

最近將開發工具更新到C++Builder Seattle, 原來現在已經不使用make指令來編譯專案
而是改使用微軟提供的MSBuild指令
大致上的作法是先使用 RAD Studio Command Prompt 來使用相關的command line 環境
然後使用 MSBuild XXX.cbproj 就可以使用command line來編譯程式

可以參考以下的資料
MSBuild Overview
Building a Project Using an MSBuild Command
http://ithelp.ithome.com.tw/question/10107277

2015年8月20日 星期四

BCB 對檔案名與路徑字串的函式

取得執行檔的完整路徑
String name = Application->ExeName;
//C:\\Borland\\CBuilder6\\Projects\\Project1.exe

取出檔案名稱
name = ExtractFileName(name);
// Project1.exe

改變副檔名
name = ChangeFileExt(name,".TXT");
//Project1.TXT

取出路徑(含斜線, 不支援反斜線)
name = ExtractFilePath(Application->ExeName);
//C:\Borland\CBuilder6\Projects\

取出路徑(不含斜線, 不支援反斜線)
name = ExtractFileDir(Application->ExeName);
//C:\Borland\CBuilder6\Projects

取出目錄名稱(在linux永遠是空白)
name = ExtractFileDrive(Application->ExeName);
//C:

取出副檔名
name = ExtractFileExt(Application->ExeName);
//.exe

2015年8月17日 星期一

使用command line 來編譯bcb的專案檔

BCB6 可以使用 BCB.exe -m Project.bpr 來編譯執行檔
不過使用這樣的編譯方式在編譯之前會喚起BCB的IDE介面
如果只是單純想編譯程式可以透過MAKE FILE的方式
在BCB3 與BCB4 的時候.bpr檔就是一個makefile文件
自從BCB5 之後 .bpr檔變成了 xml檔案
如果想要 makefile文件的話
可以透過工具程式 bpr2mak.exe Project.mak Project.bpr
來產生 Project.mak

之後再透過指令 make -f Project.mak
就可以編譯檔案了

2015年4月13日 星期一

BCB6 發生 E2015 Ambiguity between 'PLongint' and 'System::Plongint' 錯誤

參考 http://support.embarcadero.com/article/34594 的作法 將Psock.hpp 中的 typedef int *PLongint;註解掉就好了

BCB6.0 使用indy10

1. 首先使用 Administrator 安裝

2. 移除BCB6原來使用的Indy
2.1 放入安裝光碟
2.2 選擇 Modify 後按 Next
2.3 在 Custom Setup 中 選擇 Program Files/Indy 選 Do not Install
2.4 接著就是下一步到結束

3. 安裝新的 Indy
3.1 先開啟BCB6, 這時會發生連結不到 Indy Lib的訊息, 選Yes
3.2 在 Tools/Environment Options/Library Path 中加入Indy的路徑
3.3 在 Project/Options/Packages 加入 dclIndyCore60.bpl 與 dclIndyProtocols60.bpl
3.4 切換到 Directories/Conditionals TAB 在 Include Path 與 Library Path 加入 Indy的目錄(放到第一個)
3.5 記得左下角的 Default要打勾

關閉後重開如果出現找不到 IndySystem60.bpl的訊息, 先按yes 跳過
之後將IndySystem60.bpl, IndyProtocols60.bpl, IndyCore60.bpl放到c:\windows\system32的目錄下

2015年3月24日 星期二

BCB 上使用 GdiPlus (一)

在BCB上如果要使用 Gdi+ 來繪圖必須要先做下面六件事情 1. include 2. using namespace Gdiplus; 3. 宣告全域變數 GdiplusStartupInput m_gdiplusStartupInput; unsigned long m_pGdiToken; 4. 使用前要先呼叫 GdiplusStartup(&m_pGdiToken,&m_gdiplusStartupInput,NULL); 5. 結束的時候呼叫 GdiplusShutdown(m_pGdiToken); 6. 將Gdiplus.lib加入專案 此方法使用靜態鏈結到gdiplus.dll 所以要確認系統有沒有這個檔案, 如果沒有就需要到微軟官網下載. 再使用bcb附的工具程式implib.exe 產生lib檔 implib gdiplus.lib gdiplus.dll

2015年1月12日 星期一

Installshield uninstall 時檔案移除不乾淨

最近幾天使用InstallShield打包程式 一直出現移除程式後目錄殘存檔案的問題 查了很久後才發現 原來是 \\HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\Windows\CurrentVersion\SharedDlls\ 下面記錄了這些檔案的共用狀態 將裡面相關的資料清除後就可以正常移除了