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++ Discussion :

Probléme appel de fonction


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Probléme appel de fonction
    Bonjour,
    j'ai un soucis pour appeler ma fonction SearchIP(), je l'ai déclaré dans la classe Sign dans ce fichier vu en dessous:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    // Sign.h: interface for the Sign class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #if !defined(AFX_SIGN_H__A98506A6_558A_4D1D_A9CB_0F5468802A94__INCLUDED_)
    #define AFX_SIGN_H__A98506A6_558A_4D1D_A9CB_0F5468802A94__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
     
    #include "amscomdef.h"
    #include "ezprotocoldef.h"
    #include "CEZMessage.h"
    #include "CEZSystemParameter.h"
    using namespace std;
     
    class Sign  
    {
    public:
    	Sign();
    	Sign(CString sIP, CString sID, CString sMsg, CString sColor, CString sFontWidth);
    	virtual ~Sign();
    	CString GetText();
    	CString GetAddress();
    	CString GetColor();
    	CString GetFont();
    	bool SendMessage();
    	SIGN_STRUCT adaptive;
    	SearchIP();		
    private:
    	string xIP[20];	
    	CString sMessage;
    	CString sColour;
    	CString sFont;
    };
     
    #endif // !defined(AFX_SIGN_H__A98506A6_558A_4D1D_A9CB_0F5468802A94__INCLUDED_)
    et voici la fonction SearchIP:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    // Sign.cpp: implementation of the Sign class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #include "stdafx.h"
    #include "Sign.h"
     
    #include <string>		
    #include <iostream>		
    #include <fstream>		
     
    using namespace std;	
     
     
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
     
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
     
    Sign::Sign()
    {
    }
     
    Sign::~Sign()
    {
    }
     
    Sign::SearchIP()		
    {
    	string strFileTemp = "c:\\orant\\logs\\IP.ini";			
    	ifstream temp;
    	temp.open(strFileTemp.c_str());
     
    	if (temp.is_open())
    	{
    		string ligne;
    		int i = 1;
    		cout << i << endl;
    		system("pause");
    		while (getline(temp, ligne))					
    		{
    			xIP[i] = ligne.c_str();
    			// test affichage
    			cout << xIP[i] << endl;
    			system("pause");
    			i++;
    		}
    		temp.close();
    	}
    	else
    	{
    		cout << "Impossible d'ouvrir le fichier.\n";
    	}
    }
     
    // suite du programme
    jusque là je pense que tout va bien mais quand je veux appeler ma fonction dans le main, je tape
    soit: et là j'ai droit à l'erreur undeclared identifier
    soit: et là aucune erreur mais la console n'affiche pas mon cout avec la valeur de xIP[i] donc je me demande si la fonction s'exécute....

    une idée?

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Par défaut
    si tu programme en visual studio tu peux faire du pas à pas
    et met un point d'arrêt juste avant que ca déconne
    c'est le mieux que tu puisses faire pour voir si cette ligne est éxecuté

  3. #3
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    T'as bien un dans ton main ?

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Citation Envoyé par poukill Voir le message
    T'as bien un dans ton main ?
    dans le main j'ai et dans wh_sign.h j'ai donc je pense pas que ça vienne de là...
    non après ajout de #include "sign.h" dans mon main, c'est toujours pareil...

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    j'ai mis des points d'arrêts dans ma fonction SearchIP() je suis passé en mode debug mais mon programme ne s'arrête pas. Il semblerait que malgré l'appel de la fonction dans le main, ma fonction ne soit pas exécutée....

  6. #6
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    Citation Envoyé par bryce426 Voir le message
    j'ai mis des points d'arrêts dans ma fonction SearchIP() je suis passé en mode debug mais mon programme ne s'arrête pas. Il semblerait que malgré l'appel de la fonction dans le main, ma fonction ne soit pas exécutée....
    Tu pourrais poster le fichier qui contient ton main() ?

  7. #7
    Membre confirmé Avatar de inddzen
    Inscrit en
    Avril 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 133
    Par défaut
    Juste une petite remarque, ton appel à la fonction ne devrais t'il pas être du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    S->SearchIP()
    //ou 
    S.SearchIP();

  8. #8
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    voici le main en entier
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    // wh_signs.cpp : Defines the entry point for the console application.
    //
     
    #include "stdafx.h"
    #include "wh_signs.h"
     
    #include <string>
    #include <iostream>
    #include <fstream>
    using namespace std;
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
     
    /////////////////////////////////////////////////////////////////////////////
    // The one and only application object
     
    CWinApp theApp;
     
    int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
    {
    	int nRetCode = 0;
     
    	// initialize MFC and print and error on failure
    	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
    	{
    		// TODO: change error code to suit your needs
    		cerr << _T("Fatal Error: MFC initialization failed") << endl;
    		nRetCode = 1;
    	}
    	else
    	{
    		// TODO: code your application's behavior here	
     
    		void SearchIP();
     
    		for(int j=0; j<MAX_SIGNS; j++)
    		{
    			signs[j] = NULL;
    		}
     
    		string strFileName = "c:\\orant\\logs\\signsreseaux.ini";			
    		ifstream file;
    		file.open(strFileName.c_str());
     
    		if (file.is_open())
    		{
    			string ligne;
    			char IP[2];
    			char No[3];
    			char magasin[13];
    			char couleur[2];
    			char style[2];
    			int i = 0;
    			while (getline(file, ligne, '#'))					
    			{
    				strncpy( IP, ligne.c_str(), 2 );
    				file.getline(No,  3, '#');
    				file.getline(magasin, 13, '#');
    				file.getline(couleur, 2, '#');
    				file.getline(style, 2, '\n');
    				signs[i] = new Sign(IP, No, magasin, couleur, style);
    				i++;
    			}
    			file.close();
    			int iMAX = i;
    			for (i=0; i<iMAX; i++)
    			{
    				signs[i]->SendMessage();
    			}
    			return true;
    		}
    		else
    		{
    			cout << "Impossible d'ouvrir le fichier.\n";
    			return false;
    		}
    	}
    	return nRetCode;
    }

  9. #9
    Membre chevronné Avatar de Jack_serious
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    350
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 350
    Par défaut
    En effet tu n'appelle pas SearchIP() dans ton main().

    La tu declare une fonction SearchIP().

    Pour appeler SearchIP() tu devrais avoir quelque chose de ce genre la quelque part dans ton main():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sign s;
    s.SearchIP();

  10. #10
    Membre confirmé Avatar de inddzen
    Inscrit en
    Avril 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2004
    Messages : 133
    Par défaut
    A moins que je ne doive changer de lunettes je ne vois aucune instanciation de la classe Sign avant l'appel de la fonction.

    De même, tu ne peux pas t'attendre a ce que tu aies un resultat quelconque en mettant
    Cette fonction n'iras pas executer le corps de l'autre fonction Sign::SearchIP()

  11. #11
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Effectivement! j'ai tapé de cette façon là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    signs[i]->SearchIP();
    et ça fonctionne parfaitement.

    Merci pour vos réponses et pour votre patience! je commence le C++ et j'ai un peu du mal...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème appel de fonction
    Par pepsi33 dans le forum C++
    Réponses: 7
    Dernier message: 30/09/2007, 14h03
  2. Problème appel de fonction
    Par pepsi33 dans le forum C++
    Réponses: 1
    Dernier message: 30/09/2007, 11h40
  3. problème appel à une fonction pl/sql
    Par tommey dans le forum Langage
    Réponses: 3
    Dernier message: 07/08/2007, 14h19
  4. [PHP-JS] Problème appel de fonction php
    Par Didibzh dans le forum Langage
    Réponses: 10
    Dernier message: 12/06/2007, 16h55
  5. Réponses: 10
    Dernier message: 08/12/2006, 02h18

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