インデックスが配列の範囲外だった
-
04-10-2019 - |
質問
このエラーメッセージをランダムに取得します:
インデックスが配列の範囲外だった。
そして、それはこの行を指しています:
Dim placename As String = RichTextBox1.Lines(0)
解決
それはあなたのことを意味します RichTextBox1
その中に線がありません。それを置き換えます:
Dim placename As String
If RichTextBox1.Lines.Count() > 0 Then
placename=RichTextBox1.Lines(0)
Else
placename = String.Empty
End if
より詳しい情報:
通りとしての配列を想像してください。配列の各要素は家です。路上に30軒の家があり、家番号20を見つけたい場合、私は開始(1)から始めて20に達するまで上がります。配列で0は1の代わりに開始する場所です。 30の要素を含むには、インデックス0-29が含まれています。今、通りの類推に戻ります。私が通りに行って家番号31を求めると想像してみてください。その家は30軒しかないので存在しません。それは事実上、プログラムがあなたに言っていることです。 「配列には、あなたが求めたものに到達するのに十分な要素がない」と言っています。したがって、あなたは線の配列で要素0を要求し、効果的に「最初の行を与えてください」と言っています。これで、テキストボックスに0行がある場合、最初の行は存在せず、このエラーが発生します。
他のヒント
インデックスが配列の範囲外だった
そのエラーメッセージは通常、nullの場所で配列内のオブジェクトを呼び出すか、そこに何も持っていないことを意味します。次のような場合に発生します。
myArray = [0,1,2,3];
trace(myArray[6]);
インデックス6の配列には何もないため、範囲外です。通話時に配列が空の場合、インデックス0のオブジェクトのエラーが発生します。
あなたが投稿したコードの量によってそれ以上に言うことはできません。チェックして、その行が呼び出される前に配列が入力されていることを確認してください。
たぶん、あなたのSQLリーダーは、あなたが与えたインデックスに関連付けられた行を取得しなかったでしょう。それは私にとってそうでした。データベースにない列を取得していました。
次のようにコードを変更できます。
Dim placename As String
If RichTextBox1.Lines.Count > 0 Then placename = RichTextBox1.Lines(0)