VB6:如何对数字数组进行排序,但在匹配后匹配相应的字符串(文本)值

时间:2018-12-03 17:18:59

标签: vba vb6

我的代码部分有些麻烦。我必须使用VB6进行分配,不要问为什么,我知道它很旧,不是我的第一选择。我需要整理一个文本文件排行榜,我有2个文件,一个包含播放器的乐谱,另一个包含播放器的名称(每个文本文件的每一行都与名称和乐谱值相对应)。我可以对分数进行排序并将其显示在列表框中,但是我想不起来如何将字符串/文本值与适当的分数匹配?如果有人可以帮助,将不胜感激。

我曾经用一小段代码对整数得分值进行排序,但是现在从这里开始,我不知道如何将字符串/文本播放器名称添加到相应的排序得分中:

num = UBound(strPreviousScores)

For i = 0 To num
    SortedScores(i) = Val(strUnsortedScores(i))
Next i


For i = 0 To num
    For j = i + 1 To num
        If Sortedscores(i) < SortedScores(j) Then
            temp = SortedScores(i)
            SortedScores(i) = SortedScores(j)
            SortedScores(j) = temp
        End If
    Next j
Next i
'''''
intCounter = 0
For k = 0 To 4
    lstScores.AddItem SortedScores(intCounter)
    intCounter = intCounter + 1
Next
'''''

谢谢

杰克

1 个答案:

答案 0 :(得分:1)

由@Comintern建议的一个选项是具有两个成员的UDT数组。

保留现有数组的一个选项是添加索引数组。您创建一个整数数组,该数组具有与当前数组相同的元素数,并对其进行“自我填充”:每个条目的索引值为Idx(1)= 1,Idx(2)= 2等等

然后,在对分数进行排序时,您可以通过索引数组访问数组,如[Scores(Idx(x))所示]并交换索引值,而不是分数值。完成后,Idx(1)的值将成为最低Scores值的索引。相同的索引可用于访问Players数组。

这比解释起来容易。 Google以“索引排序”为例。

部分示例中的可能代码:

 If Scores(Idx(i)) < Scores(Idx(j)) Then
    temp = Idx(i)
    Idx(i) = Idx(j)
    Idx(j) = temp
 End If