2013年11月28日 星期四

Application has encountered a problem and needs to close. We are sorry for the inconvenience.

Q:
以VB.net撰寫的程式,有一天在英文視窗下執行,突然出現以下錯誤訊息:
XXX.exe has encountered a problem and needs to close.  We are sorry for the inconvenience.
但在其他語系的視窗執行正常,且切換至英文介面亦無問題。



A:
經測試,只要把en目錄改名,程式又正常了,只是缺乏英文介面,因此判斷是en目錄下的XXX.resource.dll 壞掉了,經兩整天的除錯,最後依下列步驟解決了:

  1. 初步判斷式表單的翻譯檔壞掉,因此決定將英文語系的翻譯檔暫時拿掉,但因表單很多,要全部移除,再一一加入專案測試,恐怕很費事,且由於程式一開始就當掉,因此先從程式首先載入的表單著手,果不其然,就 Bingo了。
  2. 移除語系檔的方法是先將FFF.en.resx檔案移走,再編輯XXX.vbproj檔,搜尋 FFF.en.resx,將整段移除。
  3. 重新編譯並執行,如果執行無誤,那就是那個檔壞了。
  4. 之後再把步驟3還原回去,恢復原來樣貌,並在Visual Studio 開啟 FFF form,並切換至英文語系,若出現錯誤訊息,那就表示找到了。
  5. 再做一次步驟3,並開啟 FFF form切換至英文語系,已產生一個新的英文語系檔案,重新翻譯即可。
注意,若你從Visual Studio 開啟 FFF.en.resx檔,並不一定會出現錯誤,必須將表單切換至對應之語系,才會出現錯誤畫面。 

2013年11月21日 星期四

ClipBoard.SetText出現亂碼

Q: 在英文視窗下,以.net 呼叫ClipBoard.SetText出現亂碼.
A:
ClipBoard.SetText(str, TextDataFormat.Text ) 作業系統會將字串轉成預設語系之字串,故中文字會被截成1個byte.
若將參數拿掉如下,就會正常.
ClipBoard.SetText(str)

2013年11月20日 星期三

設定網頁操作模式相容於舊版IE

由於瀏覽器不斷更新,也造成網頁程式在不同版本上執行出現問題,如果要逐一解決問題,IT人員恐怕會夜不安眠吧,幸好,MS IE提供一種簡易解法,可將網頁向下相容於舊版IE,這樣,就算使用者以新版IE執行,它也會以網頁所設定的版本解析HTML/Javascript,經測試結果好像還不賴。

處理方法很簡單,只要在網頁的段落內加上下列宣告,就搞定了。
<meta http-equiv="X-UA-Compatible" content="IE=7" />
如果網頁眾多,建議在主版網頁(Master Page)內宣告,就一勞永逸了。