0

文字列を毎回分割しようとすると+|分割から3単語のみを読み取ろうとすると正常に機能しますが、関数全体words1(0-3)を読み取ろうとすると失敗します...コードは次のとおりです:words1(4)

Private Function SetUpdateData()
    Try
        Dim delimiterChars As Char() = {"+"c}
        Dim words As String() = updatelist.Split(delimiterChars)

        Dim i As Integer = 1
        Do While (i < words.Length)
            Dim delimiterChars1 As Char() = {"|"c}
            Dim words1 As String() = words(i).Split(delimiterChars1)

            Dim name As String = words1(0)
            Dim version As String = words1(1)
            Dim fileurl As String = words1(2)
            Dim size As String = (words1(3) / 1024D / 1024D).ToString("0.00") & " MB"

            Dim cversion As FileVersionInfo = FileVersionInfo.GetVersionInfo(Path.Combine(Directory.GetCurrentDirectory() & "\" & name))
            If My.Computer.FileSystem.FileExists(Directory.GetCurrentDirectory() & "\" & name) Then
                If Not version.Contains(cversion.FileVersion) Then
                    DataGridView1.Rows.Add(name, version, size)
                    RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3))
                End If
            Else
                DataGridView1.Rows.Add(name, version, size)
                RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3))
            End If
            i = (i + 1)
        Loop
    Catch ex As Exception
        MsgBox("error")
    End Try
End Function

上記はまったく問題ありませんが、次words1(4)のように追加すると:

Private Function SetUpdateData()
    Try
        Dim delimiterChars As Char() = {"+"c}
        Dim words As String() = updatelist.Split(delimiterChars)

        Dim i As Integer = 1
        Do While (i < words.Length)
            Dim delimiterChars1 As Char() = {"|"c}
            Dim words1 As String() = words(i).Split(delimiterChars1)

            Dim name As String = words1(0)
            Dim version As String = words1(1)
            Dim fileurl As String = words1(2)
            Dim size As String = (words1(3) / 1024D / 1024D).ToString("0.00") & " MB"
            Dim status As String = words1(4)

            Dim cversion As FileVersionInfo = FileVersionInfo.GetVersionInfo(Path.Combine(Directory.GetCurrentDirectory() & "\" & name))
            If My.Computer.FileSystem.FileExists(Directory.GetCurrentDirectory() & "\" & name) Then
                If Not version.Contains(cversion.FileVersion) Then
                    DataGridView1.Rows.Add(name, version, size)
                    RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))
                End If
            Else
                DataGridView1.Rows.Add(name, version, size)
                RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))
            End If
            i = (i + 1)
        Loop
    Catch ex As Exception
        MsgBox("error")
    End Try
End Function

また、分割している文字列は次のとおりです。

+Thing v2.exe|1.0.0.1|http://example.com/uploads/Thing v2.exe|205824|Primary+Thing v2 DLL.dll|1.0.0.1|http://example.com/uploads/Thing DLL.dll|1097728|Secondary

どのすべてが出力する必要があります:

words1(0) - Thing v2.exe 
words1(1) - 1.0.0.1 
words1(2) - http://example.com/uploads/Thing v2.exe 
words1(3) - 205824 
words1(4) - Primary

しかし、上で述べたように、words1(4) を使用すると、関数全体がクラッシュします...

msgbox(ex)キャッチして失敗し、エラーメッセージが表示されますが、例外エラーに対して実行しようとするmsgboxと、ポップアップは表示されず、プログラムは続行されます。

誰かが問題を解決したり、大いに感謝される助けをくれたりできる場合は、事前に感謝し、これが私にとっても混乱を招く場合は申し訳ありません!

4

2 に答える 2

0

プログラムには 2 つのループがあります: Loop1: words1(0)>>Thing v2.exe

words1(1)>>1.0.0.1

words1(2)>> http://example.com/uploads/Thing v2.exe

言葉1(3)>>205824

words1(4)>>プライマリ

ループ 2: words1(0)>>Thing v2 DLL.dll

words1(1)>>1.0.0.1

words1(2)>> http://example.com/uploads/Thing DLL.dll

言葉1(3)>>1097728

words1(4)>>二次

下の行のwords1(4)からwords(4)のつづりを間違えたようです

 RichTextBox1.AppendText("+" & words1(0) & "|" & words1(1) & "|" & words1(2) & "|" & words1(3) & "|" & words(4))
于 2015-10-28T06:02:46.220 に答える