Algemene typen in Delphi begrijpen

Generics, een krachtige toevoeging aan Delphi, werden in Delphi 2009 geïntroduceerd als een nieuwe taalfunctie. Generieke of generieke typen (ook bekend als geparametriseerde typen), kunt u klassen definiëren die niet specifiek het type van bepaalde gegevensleden definiëren.

Als voorbeeld, in plaats van het type TObjectList te gebruiken om een ​​lijst met alle objecttypen te hebben, van Delphi 2009, Merkloos product. De eenheid Collecties definieert een sterker getypte TObjectList.

Hier is een lijst met artikelen waarin generieke typen in Delphi worden uitgelegd met gebruiksvoorbeelden:

Wat en waarom en hoe op generieke geneesmiddelen in Delphi

Generics met Delphi 2009 Win32

Generics worden soms generieke parameters genoemd, een naam waarmee ze iets beter kunnen worden ingevoerd. In tegenstelling tot een functieparameter (argument), die een waarde heeft, is een generieke parameter een type. En het parametreert een klasse, een interface, een record of, minder vaak, een methode ... Met als bonus anonieme routines en routineverwijzingen

Delphi Generics Tutorial

Delphi tList, tStringList, tObjectlist of tCollection kunnen worden gebruikt om gespecialiseerde containers te bouwen, maar vereisen typecasting. Met Generics wordt casten vermeden en kan de compiler typefouten sneller herkennen.

Generics gebruiken in Delphi

Nadat u een klasse hebt geschreven met behulp van generieke typeparameters (generiek), kunt u die klasse gebruiken met elk type en het type dat u kiest voor elk gegeven gebruik van die klasse vervangt de generieke typen die u gebruikte toen u de klasse maakte.

Generieke interfaces in Delphi

De meeste voorbeelden die ik van Generics in Delphi heb gezien, gebruiken klassen die een generiek type bevatten. Terwijl ik aan een persoonlijk project werkte, besloot ik echter dat ik een interface wilde met een generiek type.

Simple Generics Type Voorbeeld

Zo definieert u een eenvoudige generieke klasse:

type
TGenericContainer = klasse
Waarde: T;
einde;

Met de volgende definitie kunt u als volgt een generieke container met een geheel getal en een reeks gebruiken:

var
generiekeInt: TGenericContainer;
generiekeStr: TGenericContainer;
beginnen
generiekeInt: = TGenericContainer.Create;
generiekeInt.Value: = 2009; // alleen gehele getallen
genericInt.Free;
genericStr: = TGenericContainer.Create;
genericStr.Value: = 'Delphi Generics'; // alleen tekenreeksen
genericStr.Free;
einde;

Het bovenstaande voorbeeld schetst alleen het oppervlak van het gebruik van Generics in Delphi (verklaart echter niets - maar bovenstaande artikelen hebben alles wat u wilt weten!).

Voor mij waren generieke geneesmiddelen de reden om over te stappen van Delphi 7/2007 naar Delphi 2009 (en nieuwer).