想請問有那些方式可以將 Delphi 6 的專案, 建置為 64 bits 目的碼? |
尚未結案
|
jasper
一般會員 發表:2 回覆:3 積分:1 註冊:2005-08-04 發送簡訊給我 |
<!--[if gte mso 9]><xml> |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
其實大家都有X64的壓力, 我們以DELPHI5開發的程式, 實測結果在WIN7 X64下一樣可以正常運作, 並非有做任何調整, 或者修正WIN7下提供可以相容模式的作業或者VM模式, 而是直接把DELPHI5編譯好的程式丟到WIN7 上跑, 這是我的經驗提供你參考!
但要注意的是, 如果是使用BDE做為資料庫的引擎, Delphi內建的bde是16位元, 無法安裝在64位元的電腦, 必須找到適用32位元以上的bde安裝系統, 還有Delphi5的Install包裝程式(Delphi6我不清楚)也是無法在x64下執行的, 所以我都是用Delphi2007重新封包我的Delphi5程式, 利用Delphi2007的installshield 來安裝到win7 x64上, 到目前客戶執行的狀況一切都很順, 沒有大問題! |
jasper
一般會員 發表:2 回覆:3 積分:1 註冊:2005-08-04 發送簡訊給我 |
謝謝版主在深夜撥空回覆小弟的問題. 如果是一般資料庫應用的 .exe, 依版主分享的資料, 應可運作. 只是小弟遇到的是 hook 的程式, 在 Winddows 7 的世界裡, 應用程式有不同的行程種類 (例如: Office 2010 就有 32 bits or 64 bits, 不能強制客戶只能用 32 bits 的 ...; 可以由 工作管理員 辨視, 若為 32 bits 行程, 會有 * 32 的標記). global hook 的程式, 在 32 bits 的行程裡, 必須載入 32 bits 的 dll (以 Windows 7 而言, 必須放在 Windows\SysWOW64 資料夾下); 在 64 bits 的行程裡, 必須載入 64 bits 的 dll (以 Windows 7 而言, 必須放在 Windows\System32 資料夾下). 若在 64 bits 行程裡, 載入 32 bits 的 dll, 應用程式會掛掉 ..., 因為以 integer 資料型態而言, 32 bits 與 64 bits 的長度就不同 再次謝謝版主分享的資料 ^^ |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
您可以參考一下 Lazarus
http://www.lazarus.freepascal.org/ 有 x64 版本
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
jasper
一般會員 發表:2 回覆:3 積分:1 註冊:2005-08-04 發送簡訊給我 |
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
Delphi 昇級到 XE 版的講座就是講這個。
http://delphi.ktop.com.tw/board.php?cid=32&fid=107&tid=102165 |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
jasper
一般會員 發表:2 回覆:3 積分:1 註冊:2005-08-04 發送簡訊給我 |
謝謝大家的幫忙. 這段期間, 由於在忙其它的專案, 這個 x64 的部份就先擱下了. 有安裝過 Lazarus 去建置程式過, 但一建置就發生一些錯誤. 看來並不容易作轉換. 例如: 方法的參數名稱, 不可以含有 ClassName 這個變數, 依 complier 的訊息說明, 是跟 SYSTEM 這個 unit 的定義衝突. 但 Delphi 6 不會有這個錯誤. 錯誤訊息如下: ..\Utility\FindWindowUtility.pas(63,59) Error: Duplicate identifier "ClassName" ..\Utility\FindWindowUtility.pas(63,59) Hint: Identifier already defined in unit SYSTEM at line 199 [code delphi] //========================================================================== //尋找 child window handle,classname 必需符合 className 參數,符合條件再呼叫 FindWindProc //========================================================================== class function GetChildWindowWithClass(ParentWnd:HWND;CassName:string;FindWindProc:TFindWndHwndProc):HWND;overload; [/code] 公司考量 Lazarus 為 Shareware, 故萬一後續真的發生問題, 可能會很麻煩; 且必須調整程式, 要花不少力氣, 與原來的 Delphi 是否能相容也在未定之天. 所以目前可能會改用 Microsoft Visual Studio 2010 的 C 重寫必須轉為 x64 的部份程式. 期盼 Delphi 的原廠能夠加油, 不然真的只能改用其它開發工具了 ... |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |