- 4
- 0
- 约1.31万字
- 约 7页
- 2018-11-06 发布于湖北
- 举报
M-Power eNews
VSD 加值服務部 李煌乙
如何使用 PowerBuilder11 實作出最佳的 .NET 專案
PowerBuilder 11 開發.NET 應用,使用的語言主要是 PowerScripts ,關鍵在於透過編譯器
的自動轉譯功能,產出標準.NET IL(Intermediate Language)的執行碼,運作於.NET Framework
環境上。這樣的開發機制,理論上雖說可以完全使用 PB 既有的開發經驗來開發新的.NET 應用,
但實際上由於.NET 與 PowerScripts 這兩種語言間先天存在著一定的差異,例如在語法的結構
上,PowerScripts 是比較鬆散、兼容的,相較之下,.NET 所使用的語言(如 C#) ,則顯得比較嚴
謹、沒有什麼彈性,這使得許多在 PowerBuilder 中能過通過編譯的語法,在.NET 編譯器上卻不
一定能行的通,因此 PB 程式設計師在開發上需要注意一些細節,才能讓.NET 應用的開發流程
更順暢,產出合乎期待的程式碼。為此,本期文章特地整理了 PB 開發.NET Target 應用須注意
的事項,以便幫助程式設計師實作出最佳的,NET 應用。
兩個必須避免的函式寫法
‧ 避免使用 GoTo 語法
由於 PB 中沒有範圍(Scope)這樣的觀念,因此 GoTo 能夠在傳統的 PB 程式中使用,不過
在 .NET 中有範圍的觀念,雖然 GoTo 的語法能夠使用,但如果 GoTo 的 label 被標示在不同的範
圍裡,那編譯時就會出錯,範例如下:
在這個範例中, PB 程式碼(左下)會被轉譯成 .NET 程式碼(右下) ,由於.NET 語法的特性
label 的部份會形成另一個新的範圍,造成編譯錯誤!
原 PB 程式碼 轉譯後的 C# 程式碼(會造成編譯錯誤!)
if b = 0 then if (b == 0)
label: ... { // opening a new scope
else label: ...
... }
end if else
goto label {
...
}
goto label;
‧ 避免以間接的方式執行一個物件的祖先事件:
例如有三個 Window ,W_1 、W_2 、W_3 ,W_2 繼承自 W_1 ,W_3 又繼承自 W_2 ,在三
個 Window 中都有一個 Clicked event ,傳統PB 中如果在 W_3 的 clicked event 以如左下方式呼
叫執行 W_1 的 clicked event 是可行的,程式的意義是以間接的方式去呼叫執行祖先 W_1 的
clicked event ,不過這樣的語法轉換成C#的程式碼後,由於 C#並不支援如 PB 般的非直接呼叫
September 09 M-Power eNew
本篇文章版權為倍力資訊股份有限公司所有,未經書面同意,嚴禁複製、轉載
原创力文档

文档评论(0)