Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   "Array of Record" sortieren? (https://www.delphipraxis.net/158864-array-record-sortieren.html)

demic 5. Mär 2011 18:16

Delphi-Version: 5

"Array of Record" sortieren?
 
Hallo,

ich habe ein dynamisches Array of Record (ähnlich TSearchRec). Dieses Array wird mit FindFirst/Next gefüllt. Nun möchte ich natürlich den Inhalt auch auf verschiedener Weise sortieren können. Da ich nun merke, dass könnte etwas schwer werden, habe ich mit folgendes überlegt.

TStringlist.Sort

Ich möchte nach Dateinamen, Dateityp, Dateigröße oder Dateidatum sortieren können und habe mir gedacht, ich lasse das mit einem dynamischen Array und fülle eine TStringliste auf folgende Weise:

Beispiel nach Sortiertyp Dateigröße:
2622###hallo.dat|22.12.2010|13:44|+rest...(z.b. dateiattribute usw.)
62###welt.dat|13.12.2010|13:24|+rest...(z.b. dateiattribute usw.)
23362###delphi ist toll.exe|12.10.2010|3:24|+rest...(z.b. dateiattribute usw.)

Oder nach Sortiertyp Dateiname:
hallo.dat###2622|22.12.2010|13:44|+rest...(z.b. dateiattribute usw.)
welt.dat###62|welt.dat|13.12.2010|13:24|+rest...(z .b. dateiattribute usw.)
delphi ist toll.exe###23362|12.10.2010|3:24|+rest...(z.b. dateiattribute usw.)

"###" ist sozusagen eine Trennung. Je nachdem wie ich sortieren möchte, kommt der entsprechende Inhalt nach vorne, dann ein "###" und danach die anderen Daten. Kann man mit dieser Idee dann TStringlist.Sort anwenden? In der Hilfe steht, ".sort" sortiert Aufwärts. Aber ich denke ".sort" berücksichtigt zum sortieren auch den Inhalt, der nach dem "###" kommt.

Oder gibt es eine andere Möglichkeit? Am liebsten wäre mir ja, ich könnte irgendwie mein "Array of Record" beibehalten und dieses sortieren. Aber dafür müsste ich wohl selbst alle Sortieralgorithmen schreiben. Deshalb meine o.g. Idee.

Gruß
Michael

mkinzler 5. Mär 2011 18:19

AW: "Array of Record" sortieren?
 
Ich würde hierfür einen eigene TList-Nachfahren implementieren. Bei neueren Delphi-versionen würde sich eine generische Listklasse anbieten

demic 5. Mär 2011 18:24

AW: "Array of Record" sortieren?
 
Also ich habe Delphi XE Starter... warum da Delphi 5 oben steht weis ich selbst nicht. Muss man hier wohl irgendwo ändern.
Nur was ist eine "generische Listklasse" ? :?:

Michael

mkinzler 5. Mär 2011 18:30

AW: "Array of Record" sortieren?
 
Ohne Generic/Templates müsste man für jeden konkreten Typ, der in eine Liste abgelegt werden soll eine eigene Listklasse implementieren.
Bei der Verwendung von Generics, müssen die Objekt(klassen)/e nur definierte Interfaves implementieren.
http://beensoft.blogspot.com/2008/09...ist-tlist.html

Aphton 5. Mär 2011 18:31

AW: "Array of Record" sortieren?
 
Warum so kompliziert? Schreib doch einfach einen Sortieralgorithmus?! Ist ein klax'!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz