Hallo,
die Sortierung komplexer Listen mit vlsort und <, wie in c:alphasort1 bringt
natürlich die Teilliste ("ähu" "450" "530") an letzter Stelle.
(ascii "x") < (ascii "ä")
Eine alternative Lösung wäre eine Sortierung wie in c:alphasort2 beschrieben.
Hier wird richtig alphbetisch sortiert. Die Teilliste ("ähu" "450" "530")
ist an zweiter Stelle.
Meine Frage wäre, wie müsste man die Funktion alphasort1 umstellen damit sie
genauso sortiert. Vielleicht haben Sie eine Lösung wie ich die
(function (lambda (e1 e2) ... verändern müsste um dies zu erreichen.
Grüße
Code:
(defun c:alphasort1 (/ sliste eliste)
(setq sliste (list (list "xbc" "250" "230") (list "abc" "100" "200")
(list "ähu" "450" "530")
)
)
(terpri)
(princ sliste)
(setq eliste (vl-sort sliste
(function (lambda (e1 e2)
(< (strcat (car e1)) (strcat (car e2)))
)
)
)
)
(terpri)
(princ eliste)
(princ)
)
(defun c:alphasort2 (/ sliste hliste el nliste)
(setq sliste (list (list "xbc" "250" "230") (list "abc" "100" "200")
(list "ähu" "450" "530")
)
)
(terpri)
(princ sliste)
(setq hliste (list "xbc" "abc" "ähu"))
(setq hliste (acad_strlsort hliste) nliste nil)
(while hliste
(setq el (car hliste))
(setq nliste (append nliste (list (assoc el sliste))))
(setq hliste (cdr hliste))
)
(terpri)
(princ nliste)
(princ)
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP