Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Frage zur Typdeklaration

  Alt 31. Aug 2012, 12:06
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
$2B or not $2B
  Mit Zitat antworten Zitat