Delphi - Ordenar cadenas con numeros

 
Vista:

Ordenar cadenas con numeros

Publicado por federico (38 intervenciones) el 29/08/2003 14:50:22
hola, que tal, tengo que ordenar cadenas de caracteres que comienzan con numeros, el problema es que me toma los numeros mal en el orden, por ejemplo

en lugar de ordenar ---> 1a,2a,3a,10a
me ordena----------------> 1a,10a,2a,3a

alguien me puede ayudar?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ordenar cadenas con numeros

Publicado por Delfino (1216 intervenciones) el 29/08/2003 18:43:17
Esto es logico pq toma a esos numeros como cadenas y no como numeros, la solucion seria o bien poner 01, 02 etc. o bien hacer una concatenacion entre numeros y cadenas..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar cadenas con numeros

Publicado por Fer (269 intervenciones) el 01/09/2003 09:03:16
Si tienes esas cadenas almacenadas en un TStringList, puedes crear funciones para ordenar como a ti te de la gana. Por ejemplo, la siguiente función sirve para ordenar números:

function Ordenar(List: TStringList; Index1,
Index2: Integer): Integer;
{
Esta función tiene que devolver:
- Un valor negativo si el elemento con índice Index1 precede al
elemento con índice Index2.
- Un valor positivo si es a la inversa.
- Cero si son "iguales".
}
begin

try
if StrToInt(List.Strings[Index1]) < StrToInt(List.Strings[Index2]) then
result := -1
else
if StrToInt(List.Strings[Index1]) > StrToInt(List.Strings[Index2]) then
result := 1
else
result := 0;
except
on e: EConvertError do begin {El dato no es numérico}
result := 0;
end;

on e: Exception do begin {No se si se podría producir otra excepción, pero si la hay la dejamos pasar}
raise;
end;

end;
end;

Luego sólo tienes que llamar al método Sort de tu StringList:

MiLista.CustomSort(Ordenar); {*** Ordenamos según nuestro criterio ***}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar