Zum Thema
OOP:
ein guter Programmierer muss merken, wenn ein Record für das gegebene Problem zu schwach ist
und aus dem Record eine Klasse machen.
Er wird dem Record auch nicht länger nachtrauern, sondern die Änderung wird durchgezogen
(je früher desto besser).
Und wenn es an vielen Stellen eine Umstellung gibt, zeigt das nur, wie bitter nötig dies war.
Zum Thema Array:
viele Programmierer greifen zum Array (meist zum dynamischen Array) obwohl eine TList-Klasse
wesentlich geeigneter für das Problem wäre.
Ein Array hat keine eigene Intelligenz, während TList, TObjectList, ... dem Programmierer viel Arbeit abnehmen!
Zum Thema Quicksort:
Beim Sortieren werden im Prinzip nur 2 Funktionen benötigt COMPARE und EXCHANGE.
Exchange, also das Vertauschen zweier Elemente, ist für TList völlig problemlos, ganz gleichgültig
welche Daten vertauscht werden. (beim Array geht das nicht)
Beim Compare, also das Vergleichen zweier Element wird Detailwissen über die Daten notwendig.
Hier kann eine Klasse gegenüber einem Record seinen Vorteil ausspielen, denn die Compare-Methode kann quasi automatisch bereitgestellt werden.
Zitat von
Hansa:
Wie wärs denn mit einem Listen-Objekt ? In TObjectList kann man die Record-Struktur reinpacken und das Ding kennt die Methode Sort. Es müsste also nur eine Vergleichsroutine gebastelt werden.
Genau das ist der richtige Weg!
Noch einfacher ist allerdings mein Vorschlag mit den MemoryDatasets. Da bekommst du suchen, sortieren, usw. auf dem Silbertablett geliefert.
Ein Memorydataset ist sozusagen eine TObjectList mit eingebauter
RTTI und vielen zusätzlichen Funktionen.