1

私はこの機能を持っています:

Private Sub CheckParams(Values)    
    Dim Str, Ch

    If IsArray(Values) then
        Str = Join(Values, "")
    Else
        Str = Values
    End If

    For I = 1 To Len(Str)
         Ch = Asc(Mid(Str, I, 1))
         If Not ((Ch = 9) Or (Ch = 10) Or (Ch = 13) Or ((Ch > 31) And (Ch < 128))) Then
             SetError("script result contains illegal characters.")
         End If
    Next     
End Sub


この関数は、For ループの If ステートメントに従って、リストにない文字が入力値に含まれている場合にエラーをスローします。問題は、入力値に日本語の文字が含まれている場合、検証がエラーなしで渡されることです。文字の ANSI コードを返すために使用する Asc() 関数は、日本語の文字を処理する方法を知らないと思います。
ここで何が問題になっているようですか?
Asc() 関数は負の数を返しますか?

4

2 に答える 2

1

解決策を見つけました。これは Ansgar のソリューションと非常に似ていますが、代わりに MidB を 1 で使用しました。
ch = AscW(Mid(str, i, 1))

于 2013-06-10T11:58:49.590 に答える