Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: FAQ - C++ Builder (VCL/CLX) ::  StringList absteigend sortieren (CustomSort)     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Jan_
Unregistrierter




Beitrag Jan_ Unregistrierter 18:45:00 04.12.2002   Titel:   StringList absteigend sortieren (CustomSort)            Zitieren

Hallo,

wenn ich das richtig sehe kann die TStringlist nur aufsteigend sortieren. Welche Möglichkeit habe ich denn die Liste abwärts zu sortieren? Muss man das selber programmieren?


Zuletzt bearbeitet von Jansen am 13:44:57 21.01.2004, insgesamt 1-mal bearbeitet
Werbeunterbrechung
TripH
Mitglied

Benutzerprofil
Anmeldungsdatum: 01.05.2001
Beiträge: 628
Beitrag TripH Mitglied 20:46:00 04.12.2002   Titel:              Zitieren

Wenn du's dir einfach machen willst, erstell halt eine zweite StringList, geh die erste (sortierte) Liste rückwärts mit einer for-schleife durch und bring das Element der ersten Liste an das Ende der zweiten (per Add()).
Diese Lösung ist aber weder schön, noch elegant oder schnell. Eigentlich ist sie sogar unter aller Sau, aber dafür schön einfach ;)
Jan
Unregistrierter




Beitrag Jan Unregistrierter 22:31:00 04.12.2002   Titel:              Zitieren

Das mit der zweiten Liste ist doch gar keine schlechte Idee. Also ich weiss jetzt nicht warum das nicht schön oder elegant sein soll. Das ist doch bestimmt sicherer und schneller als wenn man sich selber was bastelt.
Jansen
Moderator

Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 14618
Beitrag Jansen Moderator 23:03:00 04.12.2002   Titel:              Zitieren

Nö, weil man nichts selber basteln muss. Zumindest nicht seit dem BCB5, denn ab da gibt es TStringList::CustomSort. Damit kann man nach Belieben sortieren, natürlich auch rückwärts:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Callback-Funktion, die das eigentliche Sortieren übernimmt
int __fastcall SortBackwards(TStringList *list, int Item1, int Item2)
{
  // das Minus sorgt dafür, dass das Vergleichsergebnis umgekehrt wird
  return -CompareText(list->Strings[Item1], list->Strings[Item2]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TStringList *list = new TStringList();
  list->CommaText = "3,6,2,8,1,2,9";
  list->CustomSort(SortBackwards); // Aufruf der Callback-Funktion
  Memo1->Lines = list;
  delete list;
}
//---------------------------------------------------------------------------
Anzumerken ist noch, dass die Callback-Funktion nicht als Klassenmethode (zB. der Form) deklariert werden darf.

[ Dieser Beitrag wurde am 07.12.2002 um 09:40 Uhr von Jansen editiert. ]

_________________
Jansen (Mod nur im BCB-Forum)
c++.de :: FAQ - C++ Builder (VCL/CLX) ::  StringList absteigend sortieren (CustomSort)   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.