_ArraySort sortiert Zahlen "alphabetisch" nicht numerisch

  • Hallo, dies ist mein Skript. Es sollte auch ohne ini-Datei funktionieren. Die vorletzte Zeile bereitet mir Probleme:

    [autoit]

    #include <IE.au3>
    #include <String.au3>
    #include <Array.au3>

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

    Global $oIE = _IECreate('http://' & IniRead('tracker.ini', 'Grundeinstellungen', 'Webadresse', 'koeln.pennergame.de') & '/dev/api/gang.' & IniRead('tracker.ini', 'Grundeinstellungen', 'BandenID', 215)&'.xml', 0, IniRead('tracker.ini', 'Grundeinstellungen', 'Unsichtbar0Sichtbar1',0))
    $sAPIText = _IEBodyReadText($oIE)
    $aID=_StringBetween($sAPIText, '<id>', '</id>')
    $aName=_StringBetween($sAPIText, '<name>', '</name>')

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

    Dim $aBande[UBound($aID)] [8]
    For $i = 0 to Ubound($aID)-1
    $aBande[$i][0]=$aID[$i]
    $aBande[$i][1]=$aName[$i]
    If $i > 0 Then
    _IENavigate($oIE, 'http://' & IniRead('tracker.ini', 'Grundeinstellungen', 'Webadresse', 'koeln.pennergame.de') & '/dev/api/user.' & $aID[$i] & '.xml')
    $sAPIText = _IEBodyReadText($oIE)
    $aReg=_StringBetween($sAPIText, '<reg_since>', '</reg_since>')
    $aBeitritt=_StringBetween($sAPIText, '<joined>', '</joined>')
    $aPunkte=_StringBetween($sAPIText, '<points>', '</points>')
    $aBande[$i][2]=$aReg[0]
    $aBande[$i][3]=$aBeitritt[0]
    $aBande[$i][4]=$aPunkte[0]
    $aBande[$i][6]=Round(Number($aPunkte[0]) * 0.67)
    $aBande[$i][7]=Round(Number($aPunkte[0]) * 1.25)
    EndIf
    Next
    _ArraySort($aBande, 0, 1, 0, 4)
    _ArrayDisplay($aBande)

    [/autoit]

    erzeugt ein sortiertes Array, das Col4 nur "alphabetisch", nicht aber numerisch sortiert.
    [Blockierte Grafik: http://img543.imageshack.us/img543/8285/bereichz.png]
    Wie schaffe ich es, dass es Col4 numerisch sortiert? Danke im Voraus!

    Einmal editiert, zuletzt von janrenzlow (8. April 2013 um 17:55)

  • _StringBetween() gibt die Zahlen denke ich als String aus.
    Versuch mal folgendes: [Zeile 22]

    [autoit]

    $aBande[$i][4] = Number($aPunkte[0]) ;// Wenn keine Float's vorhanden, würde auch "Int" gehen!

    [/autoit]

    Einmal editiert, zuletzt von Yjuq (8. April 2013 um 17:56)

  • bitte um Aufklärung, hat sich bei _ArraySort seit 3.3.6.1 etwas geändert? Ich benutze nämlich diese immer noch da ich am Anfang speziell bei _FTP_ListToArray2 Rückmeldunen bekam das meine Skripte unter 3.3.8.1 nicht mehr laufen. Zum Zahlen und Datum zu sortieren habe ich mir damals extra eine UDF (siehe Signatur) geschrieben.
    Wenn jetzt _ArraySort automatisch unterscheiden kann (gleiche Datentypen in der Spalte vorausgesetzt) nach welchem Schema sortiert werden soll wäre dies ein echter Fortschritt und ein Grund auf 3.3.8.1 zu wechseln.

    mfg autoBert