Ou déclarer les types? [Résolu]

Signaler
Messages postés
12
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
9 juin 2009
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
bonjour à tous,

question bête ( vous me direz y a jamais de questions bête...ben si, lisez plutôt :)

Je souhaite définir un trecord, supposé se trouver dans la rubrique "type".

Mais où écrire cette fameuse rubiruqe type dans mon unité delphi?

avant les variables globales? je précise que je souhaite que mon record soit "global", accesible depuis n'importe où dans le programme....

Merci d'avance à celui qui à la réponse (et plus encore à celui qui l'écrira ;o)

1 réponse

Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
36
Ta question n'est pas si bête et effectivement, il y a quelques principes pour declarer des types.

1) on peu declarer des types dans :
- La partie interface ou implementation d'une unité
- Une fonction, procedure ou methode de classe

2) on peu declarer des types a n'importe quel moment, aprés ou avant une portion de code, une delcaration de classe ou de variables ou de constantes, ou même encore avant une close uses bien que ce dernier point soit sujet a causion a cause de l'ecrasement possible des types par une unité.

3) un type doit etre déclaré avant une declaration de variable ou constante de ce type, a l'exception des types pointeur sur type qui peuvent etre declaré avant la declaration du type pointé.

exemple :

Unit LesTypes;

interface

  uses Windows, SysUtils; // Clause uses de l'interface

type
  pZPoint = ^TZPoint;
  TZPoint = record
    X, Y : integer;
  end;

function ZPointMake(const AX, AY: integer): TZPoint;
//function ZPointToPoint(const AZPnt: TZPoint): TPoint;
//function ZPointFromPoint(const APnt: TPoint): TZPoint;

const
  ZPointNull : TZPoint = (X: 0; Y: 0);

var
  ZPoint : TZPoint = ZPointNull;

type
  pZRect = ^TZRect;
  TZRect = record
    Left, Top, Width, Height : integer;
  end;

function ZRectMake(const ALeft, ATop, AWidth, AHeight: integer): TZRect;
//function ZRectToRect(const AZRct: TZRect): TRect;
//function ZRectFromRect(const ARct: TRect): TZRect;

const
  ZRectNull : TZRect = (Left: 0; Top: 0; Width: 0; Height: 0);

var
  ZRect : TZRect = ZRectNull;

function MakeColor(const R, G, B: byte): integer;

implementation

  uses Math; // Clause uses de l'implementation

function ZPointMake(const AX,AY: integer): TZPoint;

begin

  result.X := AX;

  result.Y := AY;

end;

function ZPointRect(const ALeft, ATop, AWidth, AHeight: integer): TZRect;
begin
  result.Left := ALeft;
  result.Top := ATop;
  result.Width := AWidth;
  result.Height := AHeight;
end;

function MakeColor(const R, G, B: byte): integer;

type
  RGBA = record
    case integer of
      0: (R,G,B,A: byte);
      1: (Color: integer);
  end;
var
  C : RGBA;
begin
  C.R := R;
  C.G := G;
  C.B := B;
  C.A := 0;
  result := C.Color;
end;

end.

<hr size="2" width="100%" />