1

多次元配列の操作方法の問題に直面しました。私は機能を持っています:

Public Function findCheckDigit(ByVal text As String) As String(,,)
    Dim msgLen As Integer = text.Length
    Dim value(msgLen + 2, 1, 1) As String
    ...
    ...
    ...
    Return value
End Function

以下では、この関数を呼び出してみます。

Private Sub bGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bGenerate.Click
        Dim value(tbText.Text.Length + 2, 1, 1) As Array

        value(tbText.Text.Length + 2, 1, 1) = findCheckDigit(tbText.Text)  <--- Here is a problem

        MsgBox(value(0, 1, 0))  ' Return empty in any position
    End Sub

この場所での問題は確かですが、同じサイズの別の3次元配列への関数呼び出しを実装するにはどうすればよいですか?

4

3 に答える 3

4

空の配列を作成していて、データを入れていません。受信配列に境界を作成する必要はありません。このようなことを行い、配列タイプが Luke94 によって以前に言及されたものと同じであることを確認してください。

Public Function findCheckDigit(ByVal text As String) As String(,,)
    Dim msgLen As Integer = text.Length
    Dim value(msgLen + 2, 1, 1) As String
    value(0, 0, 0) = "Hello"

    Return value
End Function

Private Sub bGenerate_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim value(,,) As String

    value = findCheckDigit(tbText.Text) 

    MsgBox(value(0, 0, 0))  

End Sub
于 2012-10-20T18:34:56.123 に答える
1

あなたがするとき

Dim value(msgLen + 2, 1, 1) As String

存在しない配列の要素にアクセスしようとしています。配列に5つの要素があるとしましょう(それぞれに2D配列が含まれています)。msgLenは5になります。ここで、msgLen + 2と言っているため、「value」の8つの要素にアクセスすることになります。要素が5つしかないため、これは機能しません。

于 2012-10-20T18:29:06.730 に答える
0

あなたの質問を正しく理解できたかどうかわかりません。だからここに私の提案があります

findCheckDigit 関数では、Array を String として宣言します。

Dim 値 (msgLen + 2, 1, 1) 文字列として

ただし、クリック リスナーでは配列を作成します。

Dim 値 (tbText.Text.Length + 2, 1, 1) 配列として

于 2012-10-20T18:23:00.620 に答える