Importance de l'ordre des fonctions

jeanne -  
 jeanne -
Bonjour

Je programme en borland C++ builder5. Je pensais que dans un meme programme .cpp l'orde dans lequel on ecrit les fonctions n'avait pas d'importance. Cependant lorsque j'ecris la fonction suivante:
void __fastcall TForm1::FromFile1Click(TObject *Sender)
{
if (OpenFile2->Execute())
{
FileName=OpenFile2->FileName ;
ShowMap(FileName,NbColor);
}

}
en debut de programme cela ne marche pas a l'execution alors que si je l'ecris a la fin ca marche!

L'orde d'ecriture des fonctions a-il donc une influence? l'erreur est peut etre plus grave!

8 réponses

sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
Quand ça ne marche pas, ça fait quelle erreur ?
0
Jeanne
 
Ca ecrit "project raised Exception class EAcces Violation with message acces violation at the address XXX"
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
mouais... pas très explicite, le message.

void __fastcall TForm1::FromFile1Click
ça me laisse supposer que c'est une méthode de la classe TForm1.

Elle doit donc être déclarée dans la classe TForm1, et donc après la déclaration de la classe elle-même.

Regarde si ça ne serait pas ça, par hasard.
0
jeanne
 
mon .hpp et du style
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMenuItem *File1;
TOpenDialog *OpenFile2;
TMenuItem *FromFile1;
void __fastcall FromFile1Click(TObject *Sender);

private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
......
};
ce que tu appel declaration de la class elle meme c'est
__fastcall TForm1(TComponent* Owner);
?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
C'est class TForm1 : public TForm qui est le début de déclaration de la classe.

FromFile1Click doit être déclarée dans la partie "public".
Si comme je suppose tu la met avant le "public:", elle sera privée et personne ne poura l'appeler (donc le gestionnaire de fenêtre affiche une erreur car il n'arrive pas à l'appeler).

Tu as suivi des cours de programmation objet ?
0
Jeanne
 
En fait comme non menu a ete declaré directement sur la fiche, le code correspondant a mon FromFile1Click est generer automatiquement dans le .hpp en published.
Si je le met en public il ne se passe plus rien lorsque je clique sur le bouton correspondant.
Ce qu'il y a des bizard c'est que si j'ecris la fonctionFromFile1Click a la fin du fichier .cpp sans rien changer dans le .hpp ca marche!

Tu crois qu'il est vraiment necessaire de la declarer en public?
Merci de ton aide
(ps:oui j'ai suivi quelque cours de c++)
0
sebsauvage Messages postés 33415 Statut Modérateur 15 667
 
Tu crois qu'il est vraiment necessaire de la declarer en public?

Je pense, oui.
Le gestionnaire de fenêtre qui va récupérer le clic souris sur le bouton va vouloir appeler cette méthode.
Si elle est privée, elle ne pourra pas être appelée.
0
jeanne
 
Ben en fait comme c borland qui le fais automatiquement! En plus les autres fonctions dans ce genre sont elle aussi declarer en proteger
0