classe et unit

classe et unit - Delphi/Pascal - Programmation

Marsh Posté le 04-12-2004 à 23:45:20    

Salut,
 
j'aurais besoin de votre aide...
 

Code :
  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Menus, StdCtrls;
  5. type
  6.     Stationnement = class
  7.     private
  8.       Place : integer;
  9.       Cout : integer;
  10.       TerrainOccuper : integer;
  11.       VoitureEntrerTotal : integer;
  12.     public
  13.       constructor Create;
  14.     end;
  15.   TForm1 = class(TForm)
  16.     Button1: TButton;
  17.     Button2: TButton;
  18.     Button3: TButton;
  19.     Button4: TButton;
  20.     Button5: TButton;
  21.     MainMenu1: TMainMenu;
  22.     Fichier1: TMenuItem;
  23.     procedure Fichier1Click(Sender: TObject);
  24.     procedure Button1Click(Sender: TObject);
  25.     procedure Button3Click(Sender: TObject);
  26.     procedure Button4Click(Sender: TObject);
  27.     procedure Button5Click(Sender: TObject);
  28.     procedure Button2Click(Sender: TObject);
  29.   private
  30.     { Déclarations privées }
  31.   public
  32.     { Déclarations publiques }
  33.   end;
  34. var
  35.   Form1: TForm1;
  36.   NombreStationnement: array[1..3] of Stationnement;     //Instance de Stationnement
  37.   var i : integer;
  38. implementation
  39. uses Unit2;
  40.   constructor Stationnement.Create;  //On crée un stationnement
  41.   begin
  42. Place := 50;
  43. Cout := 10;
  44.   TerrainOccuper :=0;
  45.   VoitureEntrerTotal :=0
  46.   end;


 

Code :
  1. unit Unit2;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, Menus,Unit1;
  6. type
  7.   TForm2 = class(TForm)
  8.     Edit1: TEdit;
  9.     Edit2: TEdit;
  10.     Edit3: TEdit;
  11.     Edit4: TEdit;
  12.     Label1: TLabel;
  13.     Label2: TLabel;
  14.     MainMenu1: TMainMenu;
  15.     Options1: TMenuItem;
  16.     Entrerunvhicule1: TMenuItem;
  17.     Sortirunvhicule1: TMenuItem;
  18.     Fermer1: TMenuItem;
  19.     Entrer1: TMenuItem;
  20.     Sortir1: TMenuItem;
  21.     Gains1: TMenuItem;
  22.     entrestotales1: TMenuItem;
  23.     Label3: TLabel;
  24.     Label4: TLabel;
  25.     procedure FormShow(Sender: TObject);
  26.     procedure entrestotales1Click(Sender: TObject);
  27.   private
  28.     { Déclarations privées }
  29.   public
  30.     { Déclarations publiques }
  31.   end;
  32. var
  33.   Form2 : TForm2;
  34. implementation
  35. {$R *.dfm}
  36. procedure TForm2.FormShow(Sender: TObject);
  37. begin
  38. Edit2.Text := inttostr(NombreStationnement[1].TerrainOccuper);
  39. end;


 
C'est une partie de mes 2 form
Dans mon premier form pour entrer des paramètres dans ma class "Stationnement" j'utilise "NombreStationnement[]". Pour ça sa fonctionne... Quand je veux reutilisé ma classe "Stationnement" grâce a "NombreStationnement[]" dans ma form2 c'est impossible...
 
J'ai fais plusieurs test de différentes façons et j'ai fais plusieurs recherches sous google sans rien trouver pour mon problème. J'ai trouvé pour une classe seul mais dès qui a un tableau plus rien marche.
 
Je vous remercie d'avance.  :hello:


Message édité par website2000 le 04-12-2004 à 23:46:28
Reply

Marsh Posté le 04-12-2004 à 23:45:20   

Reply

Marsh Posté le 05-12-2004 à 11:55:35    

website2000 a écrit :

c'est impossible


 
... c'est-à-dire ?


Message édité par antp le 05-12-2004 à 11:56:03

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-12-2004 à 16:40:34    

le compilateur me dit Undeclared identifier "TerrainOccuper"
dans ma form2

Reply

Marsh Posté le 05-12-2004 à 17:02:50    

bah c'est normal : il est en private et donc ne peut être manipulé que par la classe elle-même et les classes qui sont dans la même unit qu'elle...


Message édité par antp le 05-12-2004 à 17:03:08

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-12-2004 à 17:18:52    

ok merci... a part mettre mes valeurs en public existe t'il une autre manière de procéder ?

Reply

Marsh Posté le 05-12-2004 à 17:41:41    

Faire des property pour accéder aux variables de manière "propre" (càd en lecture seule par exemple, ou prévoir la possibilité d'appeler une fonction lors de l'assignement d'une valeur)
 
L'intérêt de mettre les valeurs en privé c'est pour que seule la classe y ait accès directement


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed