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

VC++ .NET Discussion :

le passage de paramètre échoue dans une application managée


Sujet :

VC++ .NET

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut le passage de paramètre échoue dans une application managée
    bonjour,
    J'ai un problème d'intégrité de données.
    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
    erc  CWfStream::getline( FILE* pFile, System::String^ sLine)
    {
       int len;
       wchar_t sTemp[80];
    	try
    	{
    	   std::fgetws( sTemp, 80, pFile);
    	   sLine = gcnew String( sTemp);
    	   len = sLine->Length;
    	   if( len > 0)
    	   {
    		   return( 0);
    	   }
    	   else
    	   {
    		   if( CWfStream::eof() != false)
    			   return( 1);
    		   else
    			   return( -1);
    	   }
    	}
    	catch(...)
    	{
    		//throw Doc_exception("erreur dans le getline", 0);
    	}
    }
    dans cette méthode la valeur de sline est "[ServerInformation]", ce qui est consistent

    mais au retour dans l'appelant la valeur est "";

    Comment ce fait il qu'un handler System::String^ ne vive pas au delà de la méthode
    Je vous met le code de l'appelant
    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
    //A variable to hold the fetched line in wstring format
        System::String^ sLine;
        //A variable to hold the position of the searched character
        unsigned int iPos;
        bool b_noMoreLine = false;
        bool b1,b2;
    	sLine = gcnew System::String("");
        //If the INI file is not open then return FAILURE
        if (!CWfStream::is_open())
        {
          return FAILURE;
        }
        //Move the file pointer to the beginning of the file
        CWfStream::seekg(0);
        //Loop till the end of the file
        b1 = CWfStream::eof() != true;
        b2 = b_noMoreLine != true;
        while( b1 && b2)
        {
    		size_t len;
    		int iStatus;
    		//Get a line from the file
    		iStatus = CWfStream::getline( pFile, sLine);
    		const wchar_t* chars = (const wchar_t*)(Marshal::StringToHGlobalUni( sLine)).ToPointer();
    		wchar_t* tmp = (wchar_t*)chars;
    		Marshal::FreeHGlobal( IntPtr( (void*)chars));
    c'est la méthode getline qui ne renvoi pas le paramètre sLine.
    Celui qui m'aidera sera

  2. #2
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut la solution
    J'ai résolue ce problème en changeant l'interface. Au lieu de passer un System::String^ dont le gcnew a une durée de vie incontrôlable, J'ai passé en paramètre un char sTemp[80], en mettant le gcnew au dessus quand il est nécessaire.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Voir ma réponse dans l'autre thread.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/12/2011, 11h51
  2. Réponses: 1
    Dernier message: 29/06/2011, 01h55
  3. Passage de paramétre dynamique dans une requete SQL
    Par d.tellier dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/01/2010, 12h57
  4. Passage de paramètre "File" dans une fonction
    Par saket2114 dans le forum Général Java
    Réponses: 10
    Dernier message: 28/10/2009, 16h40
  5. Réponses: 3
    Dernier message: 09/04/2007, 22h26

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