Delphi-Quellcode:
type
newTypeName = KnownType;
Dieses legt nur einen Alias an, aber der Typ selbst wird nicht verändert.
TypeInfo(newTypeName) gibt also die Typinfo von KnownType zurück.
Delphi-Quellcode:
type
newTypeName = type KnownType;
Das erstelle einen neuen und eigenständigen Typen an.
Der Compiler kann dadurch z.B. zwischen diesen Typen unterscheiden-
z.B.
procadure Xyz(var i: newTypeName);
will unbedingt genau diesen Typen.
Wurde es ohne "type" deklariert, dann kann man auch KnownType übergeben, da beide "Typen" ja identisch sind.
Gleiches gilt z.B. auch für überladene Methoden, wo man zwei Versionen erstellen könnte, welche jeweils einen der beiden Typen entgegennehmen ... vorausgesetzt die Typen sind unterscheidbar, also mit "type" deklariert.
Gleiches gilt auch für
Delphi-Quellcode:
type
TNewClass1 = TMyClass; // Alias (alles typmäßig und inhaltlich identisch)
TNewClass2 = type TMyClass; // neuer Typ, welcher aber inhaltlich identisch zu TMyClass ist
TNewClass3 = class(KnownType); // abgeleitete Klasse