___ answer8055730 ___
Wenn Sie die Liste erstellen, können Sie einen Vergleich übergeben. Es gibt einige Vergleichsklassen in der Generics.Defaults-Unit, in der Sie eine anonyme Methode zum Vergleichen zweier Elemente übergeben können. Sie werden für verschiedene Methoden wie IndexOf, Contains oder Sort verwendet.
Beispiel:
%Vor%
___ qstntxt ___
Ich habe eine Sammlung von
%Vor%
TActivityCategory hat eine Name-Eigenschaft vom Typ string und ich möchte den TList mit der Name-Eigenschaft suchen.
Ich sehe BinarySearch in der TList & lt; & gt; aber das würde eine Instanz von TActivityCategory erfordern. Ich möchte nur die Zeichenfolge für einen Namen übergeben.
Wie würde ich das machen?
___ answer8054655 ___
Wenn Sie nicht nach einer Instanz suchen müssen, müssen Sie Ihre eigene Suche durchführen. Es gibt drei grundlegende Möglichkeiten, dies zu tun:
-
Binäre Suche: Implementieren Sie Ihre eigene binäre Suche. Dies funktioniert nur, wenn die Liste sortiert ist.
-
Lineare Suche: Implementieren Sie Ihre eigene lineare Suche. Dies wird immer funktionieren, aber auf großen Listen ist es deutlich langsamer als eine binäre Suche.
-
Wörterbuchsuche: Pflegen Sie neben der Liste ein %code% . Keine Suche erforderlich, aber Sie müssen etwas Code schreiben, um die beiden synchron zu halten.
___ tag123delphi ___ Delphi ist eine Sprache für die schnelle Entwicklung von nativen Windows-, macOS-, Linux-, iOS- und Android-Anwendungen mithilfe von Object Pascal. Der Name bezieht sich sowohl auf die Delphi-Sprache als auch auf deren Bibliotheken, Compiler und IDE, mit denen Delphi-Projekte bearbeitet und debuggt werden können.
___ tag123generics ___ Generika sind eine Form von parametrischer Polymorphie, die in einer Reihe von Sprachen gefunden wird, einschließlich .NET-Sprachen, Java und Swift.
___ tag123list ___ Delphi VCL-Klasse für eine Liste von Zeigern.
___ answer8056308 ___
Um ehrlich zu sein, und unter Berücksichtigung aller für einen komparatorbasierten Ansatz erforderlichen Kesselplatten ist es vielleicht am einfachsten, eine eigene Suchroutine zu schreiben:
%Vor%
___ qstnhdr ___ Wie suche ich eine generische TListT-Sammlung? [Duplikat]
___