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

Messages postés
12
Date d'inscription
vendredi 29 mai 2009
Dernière intervention
9 juin 2009
- - Dernière réponse : f0xi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 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)
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
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%" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.