extern - C++ - Programmation
Marsh Posté le 26-12-2003 à 12:04:50
ben je crois que c'est clair : où tu vois que lMyType est un pointeur ?
Marsh Posté le 26-12-2003 à 13:12:24
TList lMyType;
TList* ptr_lMyType = &lMyType;
la ptr_lMyType est un pointeur.
Marsh Posté le 26-12-2003 à 13:31:55
Je vérifie... si c'est ça, je me reconvertit en moine tibétain
Marsh Posté le 26-12-2003 à 13:37:31
OK je viens vous annoncer que la communauté tibétaine vient de s'agrandir d'un membre... OOOooooommm
Ceci dit je me retrouve avec un unresolved external "lMyType" au linkage (dans maClasse.OBJ)
Si vous pouviez me dire quel symptôme ceci invoque... je vous en serais reconnaissant.
(j'ai cette fois ci vérifié et la première définition dans le principal de mon projet est bien référencé TList* lMyType) et se trouve en public.
Marsh Posté le 26-12-2003 à 13:38:12
et déjà Merci pour votre réponse Taz et BlackGoddess
Marsh Posté le 26-12-2003 à 13:41:15
extern n'est qu'une déclaration, aucun espace mémoire n'est alloué. il faut ailleurs une définition (la même chose sans l'extern pour faire simple)
Marsh Posté le 26-12-2003 à 14:07:48
taz a écrit : extern n'est qu'une déclaration, aucun espace mémoire n'est alloué. il faut ailleurs une définition (la même chose sans l'extern pour faire simple) |
C'est fait Taz, je te mets mon code du header de mon module principal :
je cherche a faire des triggers et comme tu peux le voir, la déclaration dans mon public n'est pas étancée d'un extern..
Code :
|
Marsh Posté le 26-12-2003 à 15:37:34
si j'ai dit une bêtise, merci de me le faire remarquer
Marsh Posté le 26-12-2003 à 21:45:00
extern PACKAGE TPrincipal *Principal;
=> la dans tous les .cpp a compiler ou il y aura #include "accueil.hpp" (je suppose) le compilo saura qu'il existe TPrincipal *Principal;, une maniere simpliste de voir serait de dire que l'extern rappelle la déclaration au compilo (etend la portée), mais il faut que ta déclaration soit faite dans un de des fichiers, sans l'extern (la "vraie" déclaration)
par exemple :
dans un fichier chouxfleur.cpp
Code :
|
dans un fichier choucroute.cpp
Code :
|
et dans u nfichier accueil.cpp
Code :
|
sinon, le typedef struct machin { ... } machin; est inutile en c++, on laisse struct machin { ... };
sinon, peut-etre pourrais-tu utiliser un peu plus de références et un peu moins de pointeurs ?
void __fastcall Motdepasse1Click(TObject *Sender);
=> je suppose que c'est auto-généré, c'est un pointeur pour permettre le polymorphisme je suppose... mais
void erreur(int, AnsiString*);
tu pourrais p-e mettre void erreur(int, AnsiString & ); (sans parler de constance)
enfin, c'est mon avis sur la maniere ... je suppose que Taz en aura un autre
Marsh Posté le 26-12-2003 à 21:53:30
sinon, je n'avais pas vu le passage
#define TYPE_ANNEE 0
...
int type;
tu peux peut-etre utiliser une enumération pour plus de sécurité :
enum TypeTrigger { TYPE_ANNEE, TYPE_MOIS, TYPE_JOUR, TYPE_HEURE, TYPE_MINUTE, TYPE_SECONDE, TYPE_MSEC };
...
TypeTrigger type;
Marsh Posté le 29-12-2003 à 09:12:43
lol effectivement sur la forme y a pas mal de choses a revoir et pas mal du code est généré automatiquement (le TObject* Sender est effectivmeent une merde qui est placée là et qui fait davantage chier que servir en tout cas pour moi.).
Ceci dit merci pour les précisions BlackGoddess. Je vais essayer
Marsh Posté le 29-12-2003 à 10:18:02
ok j ai essayé en incluant le header dans mes formulaires fils...
Bon ca compile...
mais a l exec, les valeurs de ma liste LORSQUE JE L'APPELLE DEPUIS LE FORMULAIRE FILS, sont complètement n'importe quoi.
En débuggant : je saisis une trigger : je regarde dans mes var et je vois qu'elle a bien été intégrée dans ma liste.
J'arrive a la ressortir de la liste.
j'appelle mon form de modification.
J'appelle la liste... et il me sort des valeurs tirées de n'importe ou.
J'ai meme essayé de faire une méthode qui me remplit un pointeur sur trigger a partir de la pos dans le formulaire principal, mais ca fait la meme chose : la fct fonctionne correctement lorsque je suis dans mon formulaire principal et merde dans mon form de modif...
Quelqu'un voit il quelque chose qui causerait ce probleme de référenciation douteuse??
(lorsque je regarde les propriétés count et capacity de ma list, il me semble qu'elles sont justes dans les 2 forms, ce serait donc le pointeur qui ferait nimp')
Pitiéééé aidez moi!!!
Marsh Posté le 29-12-2003 à 10:36:41
problème de portée p-e ?
Marsh Posté le 29-12-2003 à 13:53:03
exact, j'ai corrigé le tir
c est débile les conneries que je laisse des fois dans mon code
merci pour toute votre aide BlackGoddess et Taz!
Marsh Posté le 26-12-2003 à 11:54:16
Je vois que vous etes plutot bons en C++ alors j'ai bon espoir que quelqu'un me lache l'info que je recherche
J'essaie de faire un extern dans C++ builder.
Cet extern doit se faire sur une TList de type maison (nommons le "MyType" )
je déclare mon typedef MyType et mon extern TList lMyType;
Cependant, a la compil, il me sort une erreur :
pointeur sur structure nécessaire du coté gauche de "->"
à l'instruction :
J'essaie juste de comprendre comment fonctionne extern et je ne doute pas d'avoir une lacune que certains d'entre vous jugeront impardonnable
---------------
A vaincre sans péril, on triomphe sans gloire