Types de données, variables et constantes - Index (Object Pascal)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Types de données, variables et constantes - Index


Cette rubrique décrit la syntaxe des déclarations de types Object Pascal.

Syntaxe de déclaration des types

Une déclaration de type spécifie un identificateur désignant un type. La syntaxe d'une déclaration de type est :

type newTypeName = type

newTypeName est un identificateur valide. Par exemple, étant donné la déclaration de type suivante :

type TMyString = string;

vous pouvez faire la déclaration de variable suivante :

var S: TMyString;

La portée d'un identificateur de type n'inclut pas la déclaration de type même (sauf pour les types pointeur). Il n'est donc pas possible de définir, par exemple, un type enregistrement qui s'utilise lui-même de manière récursive.

Quand vous déclarez un type identique à un type existant, le compilateur traite le nouvel identificateur de type comme un alias de l'ancien. Ainsi, étant donné les déclarations suivantes :

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

X et Y sont du même type  ; à l'exécution, il n'est pas possible de distinguer TValue de Real. Généralement, cela ne pose pas problème, mais si vous définissez un nouveau type pour utiliser des informations de type à l'exécution (par exemple, pour associer un éditeur de propriété aux propriétés d'un type donné), la distinction entre "nom différent" et "type différent" devient importante. Dans un tel cas, utilisez la syntaxe :

type newTypeName = type KnownType

Par exemple,

type TValue = type Real;

oblige le compilateur à créer un nouveau type distinct appelé TValue.

Les types des paramètres var originaux et formels doivent être identiques. Par exemple,

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;

Remarque :  Cela s'applique aux paramètres var, et non aux paramètres const ou par valeur.

Voir aussi