Variables globales borland c++ builder

Variables globales borland c++ builder - C++ - Programmation

Marsh Posté le 11-05-2004 à 09:18:57    

Je souhaiterais pouvoir utiliser les variables de la form1 dans la form2. Comment faire ?
Merci. :)

Reply

Marsh Posté le 11-05-2004 à 09:18:57   

Reply

Marsh Posté le 11-05-2004 à 09:22:33    

et bien. pour une première question...  
 
les variables globales c'est pas terrible. mais si vraiment...
 
il te faut faire une nouvelle unit, et tu incluera celle-ci dans les 2 forms.

Reply

Marsh Posté le 11-05-2004 à 10:01:44    

sinon tu peux faire aussi des accesseurs dans la classe de la Form1, du genre :
 

Code :
  1. class TForm1
  2. {
  3.    private:
  4.       int var;
  5.    public:
  6.       TForm1();
  7.       int GetVar();
  8. };
  9. TForm1::TForm1()
  10. {
  11.    var = 3;
  12. }
  13. int TForm1::GetVar()
  14. {
  15.    return var;
  16. }


 
comme ça ta variable est accessible en lecture depuis les autres classes


Message édité par Harkonnen le 11-05-2004 à 10:02:41
Reply

Marsh Posté le 11-05-2004 à 10:34:49    

JagStang a écrit :

et bien. pour une première question...  
 
les variables globales c'est pas terrible. mais si vraiment...
 
il te faut faire une nouvelle unit, et tu incluera celle-ci dans les 2 forms.


J'ai fait :

Code :
  1. #include "unit1.h"


dans unit2.cpp mais ca marche pas.

Reply

Marsh Posté le 11-05-2004 à 10:36:02    

kheon a écrit :

J'ai fait :

Code :
  1. #include "unit1.h"


dans unit2.cpp mais ca marche pas.


l'as-tu sauvé et ajouté au projet ?

Reply

Marsh Posté le 11-05-2004 à 10:44:23    

oui oui
en fait j'explique ce que je veux faire :
Je fait un prog qui gere une liaison serie. Et je voudrais faire une deuxieme form pour configurer la liaison (com1, com2, vitesse ...)
J'ai donc mis sur cette form2 des radiobuttons et des edits et je voudrais que quand on click sur ok, le valeurs soit enregistrées dans des varialbe utilisable dans la form1.
Voila.

Reply

Marsh Posté le 11-05-2004 à 10:46:54    

qu'entends-tu par "ça ne marche pas ?"

Reply

Marsh Posté le 11-05-2004 à 10:50:06    

j'ai declarer cette variable en globale dans la form1 :

Code :
  1. char *port = "COM1";


et quand je veux l'utiliser dans la form2 il me dit qu'il ne connait pas port

Reply

Marsh Posté le 11-05-2004 à 10:51:52    

il faut la déclarer les variables dans le .h

Reply

Marsh Posté le 11-05-2004 à 10:52:03    

oublie pas const non plus dans ce cas

Reply

Marsh Posté le 11-05-2004 à 10:52:03   

Reply

Marsh Posté le 11-05-2004 à 10:54:18    

pourquoi const ?
et puis si je la declare dans le .h et que j'inclue le .h dens unit2 il me dit declaration multiple de port.

Reply

Marsh Posté le 11-05-2004 à 11:00:31    

ben oui, il ne faut le DECLARER qu'une fois (dans le .h)
 
pourquoi const, pour ne pas pouvoir modifier la valeur de port, vu que celle-ci est en dur


Message édité par jagstang le 11-05-2004 à 11:01:06
Reply

Marsh Posté le 11-05-2004 à 11:50:06    

kheon a écrit :

j'ai declarer cette variable en globale dans la form1 :

Code :
  1. char *port = "COM1";




[:aaah]
tu travailles sous C++ Builder, pourquoi t'utilises pas la classe AnsiString de la VCL plutot que de coder des chaines de caractères façon C ? :o
à la rigueur tu pourrais aussi utiliser std::string, mais surtout pas cet immonde char *
enfin bon, je dis ça, je dis rien hein ! :o
 
edit: et mes accesseurs, ils te conviennent pas ? ils seraient pourtant tout indiqués pour ce que tu veux faire


Message édité par Harkonnen le 11-05-2004 à 11:51:53
Reply

Marsh Posté le 11-05-2004 à 12:09:18    

heu je suis pas tres calé niveau class
et j'utilise char * parce que la fonction createfile veux un char * en argument

Reply

Marsh Posté le 11-05-2004 à 12:18:07    

kheon a écrit :

heu je suis pas tres calé niveau class
et j'utilise char * parce que la fonction createfile veux un char * en argument


t'as une fonction membre d'AnsiString qui te permet de convertir l'AnsiString en char * : AnsiString.c_str()
tu peux donc déclarer ta chaine en AnsiString et utiliser CreateFile avec :

Code :
  1. AnsiString s("C:\\test.txt" );
  2. CreateFile(s.c_str(), ...);


c'est quand même plus propre :o

Reply

Marsh Posté le 11-05-2004 à 12:22:13    

ok merci. Mais cela ne resoud pas mon probleme

Reply

Marsh Posté le 11-05-2004 à 12:27:59    

kheon a écrit :


et puis si je la declare dans le .h et que j'inclue le .h dens unit2 il me dit declaration multiple de port.


 
Tu la déclares dans le .cpp, et ensuite dans le .h mais avec un "extern" devant sa déclaration dans ce .h


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

Marsh Posté le 11-05-2004 à 12:30:16    

ok j'essaie, merci

Reply

Marsh Posté le 11-05-2004 à 12:40:42    

mais enfin, et mes accesseurs, c'est pourtant tellement pas sorcier et propre [:sisicaivrai]

Reply

Marsh Posté le 11-05-2004 à 12:49:47    

Harkonnen aurais tu un bon livre a me conseiller pour apprendre      
la poo en c++ ?

Reply

Marsh Posté le 11-05-2004 à 12:52:00    

"Le langage C++", édition spéciale, de Bjarne Stroustrup (le créateur du langage)

Reply

Marsh Posté le 11-05-2004 à 12:56:27    

ok merci !

Reply

Marsh Posté le 11-05-2004 à 14:50:51    

Harkonnen a écrit :

mais enfin, et mes accesseurs, c'est pourtant tellement pas sorcier et propre [:sisicaivrai]


 
Trop propre :o
 
(perso je ferais des property, c'est encore plus propre, mais bon, c'est probablement parce que je suis programmeur Delphi :D)


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

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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