Generics, eine leistungsstarke Ergänzung zu Delphi, wurden in Delphi 2009 als neues Sprachfeature eingeführt. Generika oder generische Typen (auch bekannt als parametrisierte Typen) können Sie Klassen definieren, die den Typ bestimmter Datenelemente nicht speziell definieren.
Anstatt den Typ TObjectList zu verwenden, um eine Liste aller Objekttypen aus Delphi 2009 zu erhalten, wird der Typ Generika. Die Sammlungseinheit definiert eine stärker typisierte TObjectList.
Hier ist eine Liste von Artikeln, die generische Typen in Delphi mit Anwendungsbeispielen erklären:
Generika werden manchmal als generische Parameter bezeichnet, ein Name, der es ermöglicht, sie etwas besser einzuführen. Im Gegensatz zu einem Funktionsparameter (Argument), der einen Wert hat, ist ein generischer Parameter ein Typ. Und es parametrisiert eine Klasse, eine Schnittstelle, einen Datensatz oder, seltener, eine Methode ... Mit als Bonus anonymen Routinen und Routinereferenzen
Delphi tList, tStringList, tObjectlist oder tCollection können zum Erstellen spezialisierter Container verwendet werden, erfordern jedoch eine Typumwandlung. Mit Generics wird das Casting vermieden und der Compiler kann Tippfehler früher erkennen.
Nachdem Sie eine Klasse mit generischen Typparametern (Generics) geschrieben haben, können Sie diese Klasse mit jedem Typ verwenden. Der Typ, den Sie für eine bestimmte Verwendung dieser Klasse auswählen, ersetzt die generischen Typen, die Sie beim Erstellen der Klasse verwendet haben.
Die meisten Beispiele für Generics in Delphi verwenden Klassen, die einen generischen Typ enthalten. Während ich an einem persönlichen Projekt arbeitete, entschied ich mich jedoch für ein Interface mit einem generischen Typ.
So definieren Sie eine einfache generische Klasse:
Art
TGenericContainer = Klasse
Wert: T;
Ende;
Mit der folgenden Definition wird wie folgt vorgegangen, um einen generischen Container für Ganzzahlen und Zeichenfolgen zu verwenden:
var
genericInt: TGenericContainer;
genericStr: TGenericContainer;
Start
genericInt: = TGenericContainer.Create;
genericInt.Value: = 2009; // nur ganze Zahlen
genericInt.Free;
genericStr: = TGenericContainer.Create;
genericStr.Value: = 'Delphi Generics'; // nur Strings
genericStr.Free;
Ende;
Das obige Beispiel zerkratzt nur die Oberfläche der Verwendung von Generics in Delphi (erklärt jedoch nichts - aber die obigen Artikel enthalten alles, was Sie wissen möchten!).
Generika waren für mich der Grund, von Delphi 7/2007 auf Delphi 2009 (und neuer) zu wechseln..