Ou déclarer les types?

Résolu
cs_sulliwane Messages postés 12 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 9 juin 2009 - 5 juin 2009 à 14:26
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 5 juin 2009 à 18:28
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

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
5 juin 2009 à 18:28
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%" />
3
Rejoignez-nous