這篇不是翻譯文章, 基本上PowerBASIC 的主要功能及特點我不再作詳細介紹, 各位網友可自行閱讀PowerBASIC 的網站及推薦文章, 筆者整理列表如下:
PowerBASIC 介紹及用戶推薦文章 http://realbasic.inisoft.mo/index.php?topic=106.0我暫列出幾個在學習過程中發現的VB6 與PowerBASIC 分別之處:
- 開發環境及控制項屬性
VB6 的開發工具是一個WYSIWYG(所見即所得)的環境, 在VB6 的Design Time 及Run Time中, 所有控制項都有很多不同的屬性, 舉例來說 textbox.left , textbox.text 用戶都可直接修改或讀取控制項的屬性,
但PowerBASIC 只是一個純粹的編譯器, 沒有內建的可視化編輯工具協助, 用戶必須以程式碼逐一建立每一個視窗及控制項, 而且只有一個主程式的流程, 所有的控制項事件必須自己編寫, 就如C++一様, 範例如下:
Build a Windows program using PBWin's built-in Dynamic Dialog Tools (DDT)http://www.powerbasic.com/support/quickstart/pbwin002.html幸好PowerBASIC 有其他的第三方可視化編輯工具軟件, 筆者便使用了FireFly Visual Designer 3.5, 編輯軟件的使用環境基本上與VB6 相似, 並且將原本的單一流程模式改為事件驅動模式, 拮圖如下:
FireFly Visual Designer (Version 3) - Screenshots
http://www.planetsquires.com/firefly_info.htm可是在PowerBASIC 裡面, 縱使用了可視化的編輯工具, 也只能在Design Time 直接修改控制項的屬性, 當真正執行軟件時, 如需在程式內讀取或修改控制項的屬性, WinAPI 的 SendMessage 是你唯一的方法, 基本上PowerBASIC 處理視窗控制項都是靠WinAPI 完成, 所以用戶必須熟識WinAPI 的各類函數, 亦正是這個原因, 其他Visual C++ 程序員能在視窗裏做的東西, 你同樣可以用PowerBASIC 呼叫WinAPI 做出來, 大大增強了PowerBASIC 的威力, 筆者也在努力埋首研究WinAPI 的書籍, 又如果你已習慣了使用WinAPI 來編寫程式碼, 你等於已經有足夠能力轉用C++編寫視窗程式, C++與PowerBASIC 兩者的編程方式基本是相同, 只是語法不一樣, 對於想學習C++ 的初學者來說, PowerBASIC 未嘗不是一個升級台階, 筆者整理的WinAPI 網站如下:
Win32 API 教學文件及相關資料 http://realbasic.inisoft.mo/index.php?topic=108.msg109#msg109- 第三方控件及開發包(SDK)
基本上所有的C Header 檔案都能輕易翻譯成PowerBASIC 的Inc 檔, 並能直接使用C++ 編譯成的Dynamic Library (DLL檔), 所以在市場上出售的DLL/SDK 都能在PowerBASIC 中使用, 下面是筆者在其他PowerBASIC 論壇詢問如何轉換C header 檔的文章 :
QRCode Encode SDK - Transalate C Header to PB http://www.jose.it-berater.org/smfforum/index.php?topic=4423.0- 臭蟲問題及支援
筆者相信PowerBASIC 的臭蟲一定比VB6 少, 至少你可以在他們的論壇內找到很多文章稱讚PowerBASIC 的穏定性, PowerBASIC 作者非常自豪於這一點, 可能在地球上少於一萬人會真正使用PowerBASIC 開發軟件, 因為我看到他們的論壇登記用戶只有5千多人, 但不要少看這5千多個會員, 原作者都在裏邊, 基本上你能淸楚提出的問題, 其他的會員都會很積極解答, 回答者不是像其他討論區內呃Post的人, 他們全是真正的PowerBASIC 用戶, 從來高手都是離經叛道的, 這些人不使用Microsoft 的產品, 不是因為貪平, 而是他們真正了解什麼工具才適合他們, 花少少時間看一看論壇內的文章, 你會明白我的意思, 筆者整理的論壇網站如下:
必須參與或詳細閱讀的 PowerBasic 論壇網站 http://realbasic.inisoft.mo/index.php?topic=103.0- 效能及分發安裝檔
筆者基本上可以肯定除了C++ 編譯出來的執行檔以外, PowerBASIC 編譯出來的執行檔是效率最高的, 除此之外, PowerBASIC 是一個真正的編譯器, 除非你在程式碼內有使用第三方的控件或DLL, 否則的話PowerBASIC 編譯出來的執行檔, 只要一個Exe 檔案便能運行, 對於VB6 的使用者有非常大的吸引力, 我個人認為用來編寫Shareware 之類的小型軟件, PowerBASIC 可算是最佳的工具, 容易安裝的軟件比容易使用來得重要 !
- 資料庫及陣列使用
如果你是習慣了跟隨Microsoft 的指引使用資料庫與控制項連結模式(Bounded Control), 由VB6自動將資料記錄注入控制項內, 那麼你便需要花點時間改變你的使用方式, 因為PowerBASIC 沒有這樣的做法, 筆者在近10年寫的VB6 軟件, 都是自己用程式碼開啟RecordSet, 然後以迴圈方式灌入控制項之內, 或是直接將RecordSet 的全部記錄載入陣列之中, 然後再按需要放入不同的控制項之中, 每次用完RecordSet 都會立即關閉, 只會保持 ADO Connection 經常開啟, 當需要新增, 修改, 刪除記錄時便使用ADO Connection 直接執行SQL 語句, 然後再重新載入陣列或更新相關控制項, 好處是彈性非常大, 再鎖碎的資料庫, 再複雜的報表, 也可以用迴圈在陣列中計算出來, 還有一個我們的實際經驗, 縱使用一個單一檔案(MDB)作為軟件的資料庫, 也可供15至20個用戶同時連線使用(大概是2002年左右, 還未懂使用MySQL及其他Database Server), 如果使用連結模式(Bounded Control), 3個用戶同時連線便已經常當機了 !
下面便是筆者使用的資料庫控件 :
SQLitening Client/Server Database System 1.54 (必須由1.5 版本開始下載, 然後逐個Patch 更新)http://www.sqlitening.com/support/index.php?topic=3384.0- Unicode 問題
PowerBASIC 宣稱10.0版本已經支援Unicode, 但是筆者使用的FireFly 3.51還未支援, 而且我發覺還需要在程式碼內有很多的修改, 跟Visual C++一樣要處理WinAPI 關於Unicode 的問題, 才能使軟件隨意輸入及顯示Unicode 字符, 稍後會向大家公佈詳細的方法。
- 第三十天完成了下面的項目
QRCodeXtra - PowerBASIC 寫出來的QR Code 產生器http://www.inisoft.mo/smfportal/index.php?topic=143.msg144;topicseen#new詢問其他網友關於QRCode 的文章如下:
qrencode-win32 / qrcodelib.dll (GNU License)
http://www.jose.it-berater.org/smfforum/index.php?topic=4444.0