ArraySort Sortiert nicht richtig :]

  • Guten Morgen und ein Frohen 1 Aprill ;D

    Em ich Plag mich grad mit einer Highscore liste rum und sehe den Fehler nicht,
    Die folgende Funktion soll neue Highscore "versuche" notieren und sortiert als Array ausgeben.
    Nur leider sortiert _ArraySort nicht richtig.

    [autoit]

    #include <array.au3>
    Dim $tArray[2] = ["TestName6","25000"]
    $test = _Highscore(@ScriptDir&"\test.txt",$tArray)
    _ArrayDisplay($test)

    [/autoit][autoit][/autoit][autoit]

    Func _Highscore($ScoreData,$NewArray = -1)
    If Not FileExists($ScoreData) And $NewArray = -1 Then Return -1
    If Not $NewArray = -1 And Not FileExists($ScoreData) Then
    FileWrite($ScoreData,$NewArray[0]&"|"&$NewArray[1])
    ElseIf Not $NewArray = -1 Then
    FileWrite($ScoreData,"#"&$NewArray[0]&"|"&$NewArray[1])
    EndIf
    $File = FileRead($ScoreData)
    $Sco = StringSplit($File,"#")
    Dim $NsG[$Sco[0]+1][2]
    For $i = 1 to $Sco[0]
    $Data=StringSplit($Sco[$i],"|")
    $NsG[$i][0]=$Data[1]
    $NsG[$i][1]=$Data[$Data[0]]
    Next
    _ArraySort($NsG,0,0,0,1)
    Return $NsG
    EndFunc

    [/autoit]


    bsp. der Test.txt:

    Zitat

    TestName1|9000#TestName2|15000#TestName3|30000#TestName4|10000#TestName5|60000#TestName6|25000#TestName6|25000#TestName6|25000

    Arraysort geht nur gibt die Funktion das Falsche Ergebnis aus^^

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Ersetz mal Zeile 19 durch

    [autoit]

    $NsG[$i][1] = Int($Data[$Data[0]])

    [/autoit]

    Bei ner Highscore würd ich dann aber auch eher _ArraySort($NsG,1,0,0,1) machen...

    Zitat

    You just keep on trying 'till you run out of cake. ;)


    [STEAM] Source UDF

    Einmal editiert, zuletzt von K4z (1. April 2012 um 10:53)

  • Aa Danke ;D woher sollte ich auch wissen das _Arraysort ein problem mit komma zahln hat :pinch:

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Das Problem liegt darin, dass StringSplit ein Array aus StringElementen zurückgibt und damit bei _ArraySort() nach Anfangsbuchstaben, d.h. in dem Fall nach "Anfangszahlen" sortiert wird, deshalb müssen die Strings erst in Integer umgewandelt werden...