FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Ordenar TStringList con objetos
Tengo un TStringList que cargo a partir de elementos seleccionados en un TListView así:
Código:
for (nItem = 0; nItem < ListView1->Items->Count; nItem ++) { if (!ListView1->Items->Item[nItem]->Checked) continue; cAux = ""; if (InputQuery(Application->Title, UpperCase(ComboBox1->Items->Strings[ComboBox1->ItemIndex]) + "\n" + ListView1->Items->Item[nItem]->Caption + "\nIndique la cantidad", cAux) && StrToIntDef(cAux, 0) > 0) slDatos->AddObject(ListView1->Items->Item[nItem]->Caption, (TObject *)StrToInt(cAux)); } Cita:
Cita:
Código:
for (int nUno = 1; nUno < slDatos->Count; ++ nUno) for (int nDos = 0; nDos < slDatos->Count - nUno; nDos ++) if ((int)(TObject*)slDatos->Objects[nDos] < (int)(TObject*)slDatos->Objects[nDos + 1]) { Objeto = new TObject(); Objeto = slDatos->Objects[nDos]; slDatos->Objects[nDos] = slDatos->Objects[nDos + 1]; slDatos->Objects[nDos + 1] = Objeto; } Cita:
|
#2
|
||||
|
||||
Hola.
Creo que te resultará mas sencillo usar el método CustomSort de la clase TStringList, ejemplo: Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 05-03-2021 a las 00:02:23. |
#3
|
||||
|
||||
No conocía el método. Muchas gracias. No obstante no lo veo claro: Haces una llamada a una función SortCompare pero ¿no pasas parámetros en la misma? ¿No falta nada en esa llamada? Además, tal como has puesto el código, yo entiendo que se comparan únicamente dos elementos (i1 e i2).
Última edición por Angel.Matilla fecha: 05-03-2021 a las 10:48:15. |
#4
|
||||
|
||||
Hola.
El método CustomSort ordena el TStringList mediante una función de comparación personalizada cuyo puntero recibe como argumento. Esta, deberá comparar dos elementos de la lista y devolver un número que será:
Para ordenar de forma ascendente dispones del método Sort de forma directa, pero también puedes usar CustomSort del siguiente modo: Código PHP:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 05-03-2021 a las 15:56:30. |
#5
|
||||
|
||||
Perfecto. Cuando lo probé ayer, antes de escribir el mensaje, me estaba dando un error de compilación y era porque había declarado mal esa función SortCompare. Muchísimas gracias.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ordenar objetos de mas grandes a mas pequeños en TListView | Reasen | Varios | 3 | 17-11-2016 17:51:52 |
Ordenar TStringList | eennzzoo | C++ Builder | 2 | 29-06-2014 00:51:53 |
ordenar descendente TStringList Sort | ingabraham | Varios | 3 | 28-03-2014 15:25:31 |
Duda sobre destrucción de objetos compuestos por otros objetos | noob | OOP | 11 | 16-02-2009 00:28:33 |
Agregar objetos a TstringList | patorecalde | Varios | 7 | 02-11-2006 19:32:31 |
|