Сортировка массива чисел в VBS - PullRequest
1 голос
/ 26 марта 2020

Я хотел бы отсортировать массив в vbs, поэтому числа, содержащиеся в массиве, растут. Я читаю числа из текстового файла

    Sub Main()
Dim Werte(10)
Dim c  
Dim fso  
Set fso = CreateObject("Scripting.FileSystemObject")  
Set c = fso.Drives  
Set objFileToRead = CreateObject("Scripting.FileSystemObject").OpenTextFile("Y:\Benutzer\Desktop\Werte.txt",1)
Dim strLine
Dim i
i=0
do while not objFileToRead.AtEndOfStream
    strLine = objFileToRead.ReadLine()
    Werte(i)=strLine
    i=i+1
loop
objFileToRead.Close
Set objFileToRead = Nothing

for x=LBound(Werte) To UBound(Werte) - 1 Step 1
    for j= 0 to UBound(Werte)-1
        if Werte(j)>Werte(j+1) then
            temp=Werte(j+1)
            Werte(j+1)=Werte(j)
            Werte(j)=temp
        end if
    next
next 

PATH="Y:\Benutzer\Desktop\Werte_sortiert.txt"
Array_ToTextFile Werte,PATH
End Sub

Function Array_ToTextFile(a,path)  

    Const ForWriting = 2  

    Dim fso  

    Dim writer  

    Dim i  

    Set fso = CreateObject("Scripting.FileSystemObject")  

    Set writer = fso.OpenTextFile(path,ForWriting,True)  

    For i = lbound(a) to ubound(a)  
        writer.writeline a(i)  
    Next  

    writer.close  
End Function  
Main

Текстовый файл выглядит так:

10 9 8 7 6 5 4 3 2 1 0

Результат выглядит как это:

0 1 10 2 3 4 5 6 7 8 9

Число 10 должно быть в конце, но после сортировки находится на 3-й позиции. Буду признателен за вашу помощь.

1 Ответ

1 голос
/ 26 марта 2020

Проблема в том, что вы выполняете сравнение строк вместо сравнения чисел c. Если вы измените строку 21 с:

    if Werte(j)>Werte(j+1) then

на:

    if Int(Werte(j))>Int(Werte(j+1)) then

, она будет отсортирована правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...