IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Un problème avec une fonction


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut Un problème avec une fonction
    salut,

    J'utilise le composnant WebBrowser de Borland 6. J'aimerais créer "une fonction" (je ne sais pas si c'est une fonction dans mon cas) utilisant cet objet.

    Par exemple, la fonction googe qui m'affiche la page google dans mon composant: google() -> et la page s'affiche.

    Cependant, je ne peut pas utiliser l'objet WebBrowser dans ma "fonction". Avez ous une solution? Comment faut-il s'y prendre? Moi jâppel ma fonction google() simplement comme ceci

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Pour rajouter une méthode google à l'objet en question, il faut que tu recrées un composant héritant du WebBrowser. Ainsi, tu pourras faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonWebBrowser->Google();
    Sinon, tu peux tout simplement coder un procédure qui va modifier l'URL du WebBrowser, ce qui donne :


    Dans le .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall google();
    Dans le .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //Implémentation
    void __fastcall TForm1::google()
    {
      MonWebBrowser->Navigate("www.google.fr");
    }
     
     
    //Exemple d'utilisation
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      google();
    }
    Voilà, pour la partie programmation de la première solution, il faut que j'ai un peu plus de temps...

  3. #3
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par chm0105
    Cependant, je ne peut pas utiliser l'objet WebBrowser dans ma "fonction".
    Pourquoi?
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    j'ai donc créé ma fonction dans un fichier annexe, en .h. Lorsque je compile, le symbole WebBrowser n'est pas accessible.

    Merci ero-sennin. Je pense que je vais plutot utiliser la 2ème solution. Je veux inclure mes fonctions, ou plutot procédures dans un autre fichier, je peux le faire?

  5. #5
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par chm0105
    j'ai donc créé ma fonction dans un fichier annexe, en .h. Lorsque je compile, le symbole WebBrowser n'est pas accessible.
    Tu n'as qu'à faire un include de ta fiche principale dans ton fichier d'entête en annexe et il sera accessible.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    fichier d'entête, c'est le .h? Peux-tu être un peu plus clair. Je dois inclure quel fichier dans quel fichier?

  7. #7
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Oui, le h c'est pour header qui signifie en-tête.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    je dois donc inclure le Unit1.h dans fonctions.h en annexe?

  9. #9
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par chm0105
    fichier d'entête, c'est le .h? Peux-tu être un peu plus clair. Je dois inclure quel fichier dans quel fichier?
    Si tu me donnes le nom de tes fichiers sa va aller mieux

    Ton application utilise X.h et ta fonction est déclarée dans Y.h
    Dans ce cas, tu met dans Y.h (en haut)
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  10. #10
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Citation Envoyé par chm0105
    je dois donc inclure le Unit1.h dans fonctions.h en annexe?
    Oui c'est ça. On parle avec un décalage d'un post, ne fais pas attention à ma réponse précédente.
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    très bien. Le programme compile. Mais je ne peux pas accéder à ma fonction si je n'inclut pas fonction.h dans Unit.h (ce que je n'ai pas encor fait).

    Si je le fais, j'ai la même erreur: WebBrowser.. non définit...

    Je suis un peu perdu avec ses fichiers... Merci de ton aide!

  12. #12
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Juste pour être certain, est-ce que tu peux mettre ici le code de ton fichier fonction.cpp et celui de fonction.h svp (du moins la partie intéressante)
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  13. #13
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Si tu utilise la procédure de façon externe à la fiche, il faut rajouter en paramètre le WebBrowser et donc faire ceci :

    Dans le .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void __fastcall google(TCppWebBrowser MonWebBrowser);
    Dans le cpp:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //Implémentation
    void __fastcall TForm1::google(TCppWebBrowser MonWebBrowser)
    {
      MonWebBrowser->Navigate("www.google.fr");
    }
     
     
    //Exemple d'utilisation
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      google(MonWebBrowser);
    }
    En espérant ne pas me tromper ... vu l'heure, je ne suis plus plus très en état

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    voila donc une partie de mes fichiers:

    1) fonctions.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    ...
    #include "Unit1.h"
    ...
    int users(void)
    {
      // Navigue vers la page du script + paramètre users
      WideString url = urlwebadmin + urlpage + "?WebProg=users";
      Browser->Navigate(url);
      Browser->Refresh();
     
      // Récupère le Body de la page
      Variant vDocument = Browser->ControlInterface->Document;
      if(((IDispatch *)vDocument) != NULL)
      {
       Variant vBody = vDocument.OlePropertyGet("Body");
       Variant vContenuHTML = vBody.OlePropertyGet("InnerHTML");
       return vContenuHTML;
      }
    }
    2) Unit1.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
      #include "Unit1.h"
      #include "fonctions.h"
    ...
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
      lbl1->Caption = users();
    }
    //------------------------------------------------------------------------------

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    merci ero-sennin, mais je pense qu'il doit y avoir une erreur ou un oubli avec un include...

  16. #16
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    chm0105 dans un fichier .h on ne met pas de code, on met seulement les déclarations de fonction que l'on veux accéder à l'extérieur.

    Donc dans fonction.h:
    Dans fonction.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include "fonction.h"
    #include "Unit1.h"
     
    int users(void)
    {
      // Navigue vers la page du script + paramètre users
      WideString url = urlwebadmin + urlpage + "?WebProg=users";
      Browser->Navigate(url);
      Browser->Refresh();
     
      // Récupère le Body de la page
      Variant vDocument = Browser->ControlInterface->Document;
      if(((IDispatch *)vDocument) != NULL)
      {
       Variant vBody = vDocument.OlePropertyGet("Body");
       Variant vContenuHTML = vBody.OlePropertyGet("InnerHTML");
       return = vContenuHTML;
      }
    }
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    un grand MERCI! Je n'est malheuresement pas le temps de tester ceci ce soir, mais ça m'a beaucoup aidé !

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    Un dernier problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Lieur Erreur] Unresolved external 'users()' referenced from D:\UNIT1.OBJ
    J'ai donc inclut les fichiers comme indiqué ci-dessus ainsi que fonction.h dans Unit1.cpp.

  19. #19
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    Essaie de supprimer les fichiers créés de façon temporaire et recompile le tout pour voir.

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 134
    Points : 85
    Points
    85
    Par défaut
    non j'ai toujours la même erreur...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème avec une fonction
    Par mademoizel dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/06/2006, 10h51
  2. problème avec une fonction javaScript
    Par volthur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2006, 18h04
  3. Problème avec une fonction utilisateur !
    Par nalou dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/04/2006, 17h06
  4. Problème avec une fonction et un array
    Par Neal Morse dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/08/2005, 12h04
  5. Problème avec une fonction date.
    Par kmayoyota dans le forum ASP
    Réponses: 8
    Dernier message: 09/09/2004, 12h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo