2016-04-14 17 views
0

この質問は、VBScriptの機能をよりよく理解するためにはほとんど興味がありません。私は自分のコードから何を期待するかを知るために単純にキャスティングを行うことができると認識していますが、私の状況では、なぜキャスティングが必要か、あるいは「回避策」が必要なのか理解したいと思います。私はこれを実行すると、私はType Mismatchエラーを取得する私のVBScript関数の戻り値の型は何ですか?

variable1 = 1 

Public Function findSomethingInATextString(par1, par2) 
    [...searching with a Do Until loop code here...] 
    Result = 1 
    If([par2 is found in par1]) Then 
     Result = 0 
    End If 
    Return Result 
End Function 

variable1 = findSomethingInATextString("Hello World", "Hello") 

:簡単にするために、ここに私のコードの基本的な考え方です。なぜそれが当てはまるのか分かりません。 variable1は整数で、findSomethingInAString()は整数を返します。それらは同じデータ型であるように見えます。

私は多くのデバッグを行うことができない制限された環境で作業しています(このプログラムでは、コード化するのが辛いです...)。ですから、現時点では、どのデータ型が出てくるのかわかりません。整数ではないことがわかります。私の質問がはっきりしていることを確認するために、私の機能の戻り値のタイプが(誰かが知りたければ)どんなものか知りたいですが、本当の質問はです:なぜisn '変数1と一致する戻り値の型?

+0

これはVBScriptのではありません。 VBScriptでは、「バリアント」だけがデータ型です。これに正しい言語でタグを付けてください。 –

+2

あなたの擬似コードが_VBScript_でなければならない場合、裾。_VBScript_には 'Return'ステートメントはありません。関数は、プロシージャーの1つ以上のステートメントでその名前に値を割り当てることによって値を戻します。 'Return Result'の代わりに' findSomethingInAString = Result'を使用し、 'Public Function findSomethingInAString(par1、par2)'の単語_string_を省略してください。 – JosefZ

+0

あああ。パラメータ部分に "string"を入れるだけの習慣です。私はそれを編集します。 – Alamb

答えて

2

はちょうどVBScriptでreturnに言及すると、型の不一致エラーがスローされますことを、自分自身に証明するために、最小限のスクリプト

Return 

出力

cscript 36633603.vbs 
...36633603.vbs(1, 1) Microsoft VBScript runtime error: Type mismatch: 'return' 

を使用してください。

VBScriptが関数の名前に代入して関数の値を返すというJosefZのコメントを信じてください。より良い:docsを読んでください(コードを書く前に)。

証拠:

Function f1() 
    f1 = 1 
End Function 

WScript.Echo f1(), TypeName(f1()) 

出力:

cscript 36633603.vbs 
1 Integer 
+0

ありがとう@エケハード、それは面白いテストです。私はJosefZを信じて文書を読んだのですが、それは3つの異なるプロジェクトに対して3つの異なる言語でコードを書いていて、思考せずに「帰り」を書いていた時の1つでした。 – Alamb

関連する問題