Problem beim Spalten sortieren

  • Hallo!

    Ich hab eine Listview mit Elementen, die die Größe angeben. Wenn ich nach der Größe sortiere, geht das Script ja nach dem ersten Zeichen, z.B.

    1MB
    10MB
    100MB
    20MB
    3MB

    Wie krieg ich das denn in den Griff?

    Einmal editiert, zuletzt von Taek (19. August 2008 um 11:05)

  • Ich kann nicht sagen ob dieses weiter hilft, aber das ist auch ein Sortierproblem.

    Aus dem Beitrag geht nicht hervor wie die Listview erstellt wurde, somit ist "Gætte med Pia og Himo" (in deutsch "Rate mal mit Rosental") gefragt. ;)

    Array sortieren

    LG, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Ich habs aus einem Array erstellt. Hier der Code:

    Spoiler anzeigen
    [autoit]

    For $j = 1 To 100
    If StringLen($array[$j][0]) > 1 Then
    GUICtrlCreateListViewItem($array[$j][0]&"~"&$array[$j][1]&"~"&$array[$j][2]&"~"&$array[$j][3]&"~"&$array[$j][4]&"~"&$array[$j][5]&" ... "&$array[$j][6]&" ... "&$array[$j][7],$searchresult)
    EndIf
    Next

    [/autoit]

    Und die Sortierung selber mach ich so:

    Spoiler anzeigen
    [autoit]

    ...
    $searchresult = GUICtrlCreateListView("Dateiname~Größe~Status~Quelle",3,60,894,444,$GUI_SS_DEFAULT_LISTVIEW,BitOr($LVS_EX_CHECKBOXES,$LVS_EX_FULLROWSELECT))
    ...
    _GUICtrlListView_RegisterSortCallBack($searchresult)
    ...
    _GUICtrlListView_SortItems($searchresult, GUICtrlGetState($searchresult))

    [/autoit]
    • Offizieller Beitrag

    Hi,

    sowas:

    [autoit]

    #include <Array.au3>
    Global $test_A[5] = ["John - 3","Malcom - 7", "Barbara - 1", "Frank - 2345", "Diane - 99"]

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

    $re = _sortNummeric($test_A)

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

    _ArrayDisplay($re)

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

    Func _sortNummeric(ByRef $array)
    Local $t_A[UBound($array)][2], $re_A[UBound($array)]
    For $i = 0 To UBound($array) - 1
    $t_A[$i][0] = Int(StringRegExpReplace($array[$i], '[^0-9]', ''))
    $t_A[$i][1] = $array[$i]
    Next
    _ArraySort($t_A, 0, 0, 0, 0)
    For $i = 0 To UBound($array) - 1
    $re_A[$i] = $t_A[$i][1]
    Next
    Return $re_A
    EndFunc ;==>_sortNummeric

    [/autoit]

    Mega

  • D.h. also ich muss mein Array zuerst sortieren und dann aus dem sortierten Array die ListviewItems erstellen. Richtig?
    Ich möchte eigentlich nicht bei jeder Sortierung die Items neu erstellen...

    EDIT: Habs selber rausgefunden :thumbup:

    2 Mal editiert, zuletzt von Taek (19. August 2008 um 11:05)