Recapitulación:¿Cómo obtener el orden de Delphi como en el Explorador de Windows?
- La terminología que he estado buscando parece ser " tipo natural".
Para comportamientos en los sistemas operativos:
- para Windows (versión> = XP), el Explorador de Windows utiliza naturales tipo.
- Para terminales Linux: utilice "ls -v" en lugar de "ls" simple para obtener el tipo natural .
Para programar en Delphi, use la API de Windows StrCmpLogicalW para ordenar de forma natural.
- para la programación en Delphi & Kylix & Lázaro, utilizan las funciones hechas a mano para conseguir tipo natural:
- (1) envoltorio Delphi para Orden Natural Comparación de Cadenas de Martin piscina.
http://irsoft.de/web/strnatcmp-and-natsort-for-delphi - (2) Códigos de algoritmo de clasificación de alfanum en otros idiomas del sitio davekeolle.
http://www.davekoelle.com/alphanum.html - (3) Otras páginas conocedores:
http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html
http://objectmix.com/delphi/722211-natural-sorting-optimizing-working-solution.html
http://groups.google.com/group/borland.public.delphi.language.delphi.general/browse_thread/thread/1141d49f8bbba577
http://objectmix.com/delphi/401713-alphanumeric-sort-routine-delphi.html
- (1) envoltorio Delphi para Orden Natural Comparación de Cadenas de Martin piscina.
================ ==========
Los siguientes nombres de archivo se ordenará en el Explorador de Windows como se muestra a continuación:
test_1_test.txt
test_2_test.txt
test_11_test.txt
test_12_test.txt
test_21_test.txt
test_22_test.txt
Si, por ejemplo, los puse en una instancia TStringList y llamar a clasificar, el orden de clasificación es la siguiente:
test_1_test.txt
test_11_test.txt
test_12_test.txt
test_2_test .txt
test_21_test.txt
test_22_test.txt
Y para el registro, los nombres de los archivos anteriores se ordenarán en la terminal rxvt de Cygwin o terminal xterm de las distribuciones de Linux como CentOS como se muestra a continuación:
test_11_test.txt
test_12_test.txt
test_1_test.txt
test_21_test.txt
test_22_test.txt
test_2_test.txt
Podría ayudar a explicar cómo se puede entender esta diferencia de clasificar los comportamientos? Además, ¿es posible obtener el mismo orden que en Windows Explorer? ¡Cualquier sugerencia es apreciada!
PD: Mi configuración regional de Windows está configurada en chino, pero creo que sería lo mismo para la configuración en inglés.
ver http://stackoverflow.com/questions/2175066/how-can-i-get-tstringlist- to-sort-differently-in-delphi –
Me he dado cuenta de esto antes. AFAICS, las versiones de Windows más recientes reconocen el número dentro del nombre de archivo y clasifican los números como números y no como texto. –
@ax: ¡Muchas gracias por la información! ¡Lo leeré ahora! – SOUser