Das ist schon mal ein großer Schritt. Habt Ihr noch eine Idee, wie man die Sortierung
verbessern kann?
PureLVSort hatte auch den ColumnType #PureLVSORT_FileSize
und konnte damit Werte wie "1.23 GB", "235.51 MB", "1021 KB"
korrekt sortieren..
Code: Alles auswählen
Procedure.q StringToBytes (sEntry.s)
Protected Result.q
Select UCase(Right(sEntry, 2))
Case "TB" : Result = ValF(sEntry) * 1099511627776
Case "GB" : Result = ValF(sEntry) * 1073741824
Case "MB" : Result = ValF(sEntry) * 1048576
Case "KB" : Result = ValF(sEntry) * 1024
Default : Result = Val(sEntry)
EndSelect
ProcedureReturn Result
EndProcedure
Code: Alles auswählen
Procedure CompareFileSize(sEntry1.s, sEntry2.s, SortOrder.b)
; ' -----------------------------------------------------
; ' Gibt zurück, ob das erste der beiden unterschiedlichen
; ' Elemente nach Maßgabe des Parameters SortOrder größer
; ' (1 bei aufsteigender Sortierung) oder kleiner (-1 bei
; ' aufsteigender Sortierung) als das zweite Element ist.
; ' Gleiche Elemente wurden bereits in CompareFunc ausge-
; ' schlossen; für sie wäre sonst 0 zurückzugeben.
; ' -----------------------------------------------------
; ' Rückgabewert je nach erwünschter Sortierung:
If SortOrder = #AscSort
; Aufsteigende Sortierung zweier unterschiedlicher Zahlen
If StringToBytes(sEntry1) < StringToBytes(sEntry2)
ProcedureReturn -1
Else
ProcedureReturn 1
EndIf
Else ; Absteigende Sortierung
If StringToBytes(sEntry1) > StringToBytes(sEntry2)
ProcedureReturn -1
Else
ProcedureReturn 1
EndIf
EndIf
EndProcedure