繁体   English   中英

Visual Basic-数组在For Each循环外丢失值

[英]Visual Basic - Array loses values outside For Each loop

我在数组中有一个轻微的编码问题,该数组会松散For Each循环之外的所有值。 我尝试了许多解决方案。 我可以在循环内正确看到所有数据(也尝试在循环内循环整个数组,也包含所有值),但是一旦退出,数组就为空。

试图将子数组外部的临时数组也声明为公共数组。 任何想法,将不胜感激。 在我的绳子尽头:-(

PS:HSarray在模块中被声明为好友。

公开课高分表格

Private TempArray(0) As Integer

Private Sub ScoreGet()

    Dim Counter As Integer = 0

    'Oppretter textfieldParser, Leser alle linjer fra tekstfil inn i array
    Using MyReader As New Microsoft.VisualBasic.
                    FileIO.TextFieldParser(ScoreFile)
        MyReader.TextFieldType = FileIO.FieldType.Delimited
        MyReader.SetDelimiters(",")
        Dim currentRow As String()
        While Not MyReader.EndOfData
            Try
                currentRow = MyReader.ReadFields()
                Dim currentField As String
                For Each currentField In currentRow

                    'Øker størrelsen på Array per linje / Kjøring av løkke
                    If Counter > 0 Then

                        'Skriver verdi til siste index i array
                        Counter = Counter + 1
                        ReDim Preserve TempArray(Counter)

                        TempArray(Counter) = currentField


                        'Hvis løkke kjører for første gang, skriv verdi til index 0, fortsett    
                    ElseIf Counter < 1

                        TempArray(Counter) = currentField
                        Counter = Counter + 1

                    End If


                Next
                'TempArray stops containing data here----WHY????


            Catch ex As Microsoft.VisualBasic.
                        FileIO.MalformedLineException
                MsgBox("OBS! Noe gikk galt ved uthenting av high score")
            End Try
        End While
    End Using


    'Sorterer array etter data-størrelse - Noe kødd her!!
    TempArray.Sort(TempArray)
    TempArray.Reverse(TempArray)



    'Skriver de 5 første (og største) verdiene i temp-array til liste shared array i modul
    Array.Copy(TempArray, HSarray, 5)




    'Sletter innhold
    'Erase TempArray
    'ReDim TempArray(0)

End Sub

必须在过程级别声明数组变量。 请参阅https://msdn.microsoft.com/en-us/library/w8k3cys2.aspx 您只能在过程级别使用ReDim。 因此,变量的声明上下文必须是一个过程。 它不能是源文件,名称空间,接口,类,结构,模块或块。 我会尝试在过程级别再次声明它,但是这次没有size参数。

Dim TempArray() As Integer

然后删除If counter > 0和整个Else子句,以使它每次在循环中都重新启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM