declaration, initialisation de variables "globales" [c++builder] - C++ - Programmation
Marsh Posté le 29-07-2002 à 15:46:00
1 -> je mettrais ça dans le constructeur (ou OnCreate) de la fenêtre si c'est une classe utilisée juste par la fenêtre, ou encore dans le fichier principal (du même nom que le projet) juste avant Application->Run(); ou juste avant la création de la fenêtre.
Mais bon ça c'est ce que je fais en Delphi, j'imagine que ça marche pareil dans C++Builder
2 -> si tu veux garder une séparation entre d'un côté le code de la fenêtre et la gestion des éléments de cette fenêtre et de l'autre côté la gestion de la calculette, je ferais ceci:
un événement OnResult dans la classe Interface qui transmet une chaîne de caractère ou un nombre à afficher.
relier cet évément à une fonction de la fenêtre qui saura mieux que toute autre classe ce qu'il faut en fair pour l'afficher.
je sais pas si c'est clair
Marsh Posté le 29-07-2002 à 16:15:56
je suis intéressé par 2-
je réuploade mon code si t curieux pour me dire commetn faire
<joke>
j'ai découvert le plus gros bug mondial
la répartion du marché visual/builder n'est pas
visualc++ = 0.0000001 % (les gars de chez microsoft)
c++builder= 99.9999999 % reste du monde
</joke>
a l'école y'a visual, j'ai meme pas réussi a faire un truc aussi con que taper un texte dans une editbox, cliquer ok, et le texte apparait égalemetn dans un label
tandis qu'avec builder c LOGIQUE et SIMPLE !
franchemetn c pas logique ke les gens fassent du visual....
http://perso.wanadoo.fr/pentium75/builder
Marsh Posté le 29-07-2002 à 16:17:35
C'est ce que je me suis toujours dit.
Pour ce qui est du GUI Visual C++ 6 est à la traîne
Mais il paraît que le 7 a ratrappé son retard
Marsh Posté le 29-07-2002 à 16:18:59
farib a écrit a écrit : je suis intéressé par 2- je réuploade mon code si t curieux pour me dire commetn faire <joke> j'ai découvert le plus gros bug mondial la répartion du marché visual/builder n'est pas visualc++ = 0.0000001 % (les gars de chez microsoft) c++builder= 99.9999999 % reste du monde </joke> a l'école y'a visual, j'ai meme pas réussi a faire un truc aussi con que taper un texte dans une editbox, cliquer ok, et le texte apparait égalemetn dans un label tandis qu'avec builder c LOGIQUE et SIMPLE ! franchemetn c pas logique ke les gens fassent du visual.... http://perso.wanadoo.fr/pentium75/builder |
Faut aussi voir que visual est pas cher par rapport à C++ builder...
Marsh Posté le 29-07-2002 à 16:19:31
C++Builder standard est à un peu plus de 100 ?
Ce n'est pas le prix du produit seul qui guide le choix des entreprises... mais plus le fait que ce soit Microsoft, et comme ils ont déjà Win+Office MS leur fait une reduc je suppose...
ou alors il regardent juste le prix du produit sans regarder les heures de boulot pour faire l'interface du soft
Marsh Posté le 29-07-2002 à 16:24:16
antp a écrit a écrit : C++Builder standard est à un peu plus de 100 ? Ce n'est pas le prix du produit seul qui guide le choix des entreprises... mais plus le fait que ce soit Microsoft, et comme ils ont déjà Win+Office MS leur fait une reduc je suppose... ou alors il regardent juste le prix du produit sans regarder les heures de boulot pour faire l'interface du soft |
c++ builder fait partie des(du) soft(s) dont je possede la license
en plus ils sont trop cool chez borland, j'avais acheté la version 5 ( la derniere dispo) pusi 3 semaines plus tard la 6 sortait, g envoyé un mail en gueulant, et ils m'ont envoyé la 6 gratos ! borland roulaizzzeeee
Marsh Posté le 29-07-2002 à 16:43:40
antp a écrit a écrit : C++Builder standard est à un peu plus de 100 ? Ce n'est pas le prix du produit seul qui guide le choix des entreprises... mais plus le fait que ce soit Microsoft, et comme ils ont déjà Win+Office MS leur fait une reduc je suppose... ou alors il regardent juste le prix du produit sans regarder les heures de boulot pour faire l'interface du soft |
Malheuresement je crois que c souvent le prix
Marsh Posté le 29-07-2002 à 18:41:44
personne n'a de réponses pour le placement de mes "globales" ?
Marsh Posté le 29-07-2002 à 18:47:56
pour la création, cf ma réponse
pour la déclaration, je mettrais ça dans un fichier global.cpp:
Interface * MonInterface;
Et dans un global.h tu mets:
extern Interface * MonInterface;
Comme ça tu inclues le .h où tu veux.
Marsh Posté le 29-07-2002 à 20:31:21
comprend pas trop (je maitrise pas extern...)
alors mes classe
j'ai
mes déclarations personnelles
Code :
|
la c la fonction qui fait l'affichage
Code :
|
ma calculette doir etre créee
Code :
|
et pour info
j'appele ma classe comme ca, par exemple
Code :
|
ma question : ou dois-je placer tous ces éléments précédents ?
Marsh Posté le 29-07-2002 à 21:29:38
bhen je l'ai dit : dans un global.cpp, et les prototypes des fonctions ainsi que les variables "extern" dans un .h que tu inclues là où tu en as besoin.
Tu mets "extern" pour dire que la variable est définie ailleurs que dans le .h, parce que si tu la définis dans le .h elle sera redéfinie dans tous les .cpp incluant ce .h, donc chaque .cpp aura sa propre variable globale... (je pense que ça ne compile pas d'ailleurs)
Marsh Posté le 29-07-2002 à 22:24:11
g fait un tru c mais ca chie
texas.cpp (le fichier la fenetre principale)
Code :
|
texas.h
Code :
|
le fichier about a pas d'importance
fichier classes_annexes.cpp
Code :
|
et le classe_annexes.h, inclus dans le texas.cpp
Code :
|
[Lieur Erreur] Unresolved external '_MonInterface' referenced from C:\DOCUMENTS AND SETTINGS\FARIB\MES DOCUMENTS\CALCULETTE\TEXAS.OBJ
je capte pas le fonctionnement de extern
Marsh Posté le 29-07-2002 à 23:25:15
tu dois, dans n'importe quel CPP de ton projet, mettre
Interface * MonInterface;
le extern permet de dire "il existe une variable de ce type et de ce nom, déclarée ailleurs dans le programme".
Le message d'erreur que tu as veut dire que nulle part dans ton projet il a trouvé cette variable
Marsh Posté le 29-07-2002 à 23:36:21
'ai rajouté interface * Moninterface
Code :
|
ca fé une erreur mémoire g vu avec le débogueu parke il commence par créer la fiche, mais au moment ou il initialise, MonInterface a pas été crée (quand il initialise, il appele Actualiser....)
Marsh Posté le 29-07-2002 à 23:53:14
Tu as assigné à la variable un "new Interface" quelque part au lancement du programme, avant toute utilisation ?
Marsh Posté le 29-07-2002 à 23:57:46
non, car j'avasi cru comprender que c t pas la peine....j'avasi mal compris, autant pour moi
justemetn le new INterface(), fo ke je le place ou
Marsh Posté le 29-07-2002 à 23:59:21
quelque part dans la fonction que tu veux, du moment que ça se passe avant que tu utilises l'objet MonInterface
Marsh Posté le 30-07-2002 à 00:08:04
maintenant mes source sont pures et propres :jap:
(elles ont trouvé une certaine virginité)
EDIT
si je met Interface* MonInterface dans le classes_annexes.h inclus seulement, avec pas de extern, ca compile, avec un warning du lieur ( et ca marche)
Marsh Posté le 30-07-2002 à 00:12:40
Mwouais possible que ça marche sans extern mais méfie toi, je t'assure que le extern n'est pas inutile
J'ai déjà eu des très drôles de truc en incluant dans plusieurs fichiers .cpp des .h contenant des variables non extern
Marsh Posté le 29-07-2002 à 15:28:51
je reformule ma question
j'ai ma fiche qui marche tres bien
j'ai deux classes , un "noyeau de calculette"
elle est appelée par une autre classe qui fait le lien avec la fiche builder
1ere question
ce que j'aimerais savoir c ou déclarer proprement ces classes, sachant ke seule la 2e est appelée par l'inteface (via Interface::Touche)
et qu'il faut juste qu'elle soit crée lors du lancement de l'application (où dois-je écrire
)
2e question
comment faire pour resortir et afficher proprement un résultat ?
dois-je integrer dans mes méthodes de classe Interface la modification de mes TStaticLabel (ce qu'ici j'utilise), ou dois-je le faire a l'extérieur de la classe (c eque je fais actuellement)
Message édité par farib le 29-07-2002 à 15:32:15