Datentypen, Variablen und Konstanten - Index (Delphi)

Aus RAD Studio
(Weitergeleitet von Typdeklaration)
Wechseln zu: Navigation, Suche

Nach oben zu Datentypen, Variablen und Konstanten - Index

Dieses Thema enthält eine Beschreibung der Deklarationssyntax für Typen in Delphi.

Syntax für Typdeklarationen

Bei einer Typdeklaration wird ein Bezeichner angegeben, der einen Typ festlegt. Die Syntax für eine Typdeklaration lautet:

type newTypeName = type

Hierbei ist neuerTyp ein gültiger Bezeichner. Nach der Typdeklaration:

type TMyString = string;

ist beispielsweise die folgende Variablendeklaration möglich:

var S: TMyString;

Die Typdeklaration selbst liegt nicht im Gültigkeitsbereich des Typbezeichners (dies gilt allerdings nicht für Zeigertypen). Aus diesem Grund kann beispielsweise ein Record-Typ definiert werden, der sich selbst rekursiv verwendet.

Wenn Sie einen Typ deklarieren, der mit einem vorhandenen Typ identisch ist, behandelt der Compiler den neuen Typbezeichner als Alias für den alten. In den Deklarationen

type TValue = Real;
var
  X: Real;
  Y: TValue;

haben X und Y denselben Typ. Zur Laufzeit ist keine Unterscheidung zwischen TValue und Real möglich (was normalerweise auch nicht nötig ist). Wenn der neue Typ aber Laufzeit-Typinformationen bereitstellen soll (z. B. zur Bearbeitung von Eigenschaften eines bestimmten Typs in einem Eigenschaftseditor), muss eine Unterscheidung zwischen den Typen möglich sein. Verwenden Sie in solchen Fällen die folgende Syntax:

type newTypeName = type KnownType

Beispiel:

type TValue = type Real;

Durch diese Anweisung wird der Compiler veranlasst, einen neuen, eigenen Typ namens TValue zu erzeugen.

Bei var-Parametern müssen formale und aktuelle Typen identisch sein. Beispiel:

type
  TMyType = type Integer;
procedure p(var t:TMyType);
  begin
  end;
procedure x;
var
  m: TMyType;
  i: Integer;
begin
  p(m); // Works
  p(i); // Error! Types of formal and actual must be identical.
end;

Hinweis: Dies gilt nur für var-Parameter, nicht für const oder Wert-Parameter.

Siehe Auch