2014-11-14 30 views
0

我目前正在處理一個VB6.0應用程序,它給出的自動化錯誤不是非常一致(有時代碼工作,然後在幾次成功的迭代後崩潰)。VB6.0自動化錯誤

Dim example As String 

...

On Error GoTo ERROR 
example = UCase$(Replace(form.UniTextBox(1).Text, " ", "")) 
ERROR: 
debug.print("ERROR: " & Err.description) 

這裏面我已經確定了的代碼段將導致自動化錯誤。當計算機在Windows 7運行時設置爲波蘭語時,根本原因似乎就在於此。英文區域設置時,沒有問題。

是什麼導致了這個問題?

任何意見或建議,將不勝感激。

謝謝

+0

將此錯誤報告給'UniTextBox'自定義控件的作者。 – wqw 2014-11-14 18:21:59

回答

0

控件是ANSI而不是unicode。 COM是unicode而不是ANSI。該字符串被Windows和VB來回轉換。

Windows的控件是ANSI或Unicode。當大多數計算機只有ANSI窗口時寫入VB6,因此所有的API調用(創建一個窗口require)都是ANSI調用。將unicode發送到ANSI窗口,Windows將首先將其轉換爲ANSI。要求VB執行API調用或表單,它會將Unicode字符串轉換爲ANSI。

請參閱StrConv,字節數組可以充當unicode字符串,還可以查看區域選項中針對非unicode程序的系統設置。