Erreur de syntaxe C++

[Résolu]
Signaler
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007
-
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007
-
Bonjour,



J'ai une erreur de syntaxe (voir commentaire ci-dessous). Est ce quelqu'un peut m'expliquer pourquoi?

Le message d'erreur de Visual Studio .NET 2005 est le suivant " CSwUtil::GetSgbdName(); erreur : l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe".




Merci d'avance pour votre aide.





#include



"stdafx.h"


#include



<stdio.h>


#include



"vcode.h"


#include



".\AcsVCoding.h"


using






namespace
System::Runtime::InteropServices;


namespace



Acsepto{


bool
AcsVCoding::Init(String* user, String* pwd){


try

{







// Erreur de syntaxe






//------------------------

CSwUtil::GetSgbdName();







//------------------------

CSwUtil::DefineRootLogin( user,pwd);


CSwUtil::SetDefaultIdentify( user,pwd);


CSwUtil::LoadSettings();







if
( !CSwUtil::InitAllDefines() )


return



false
;CSwVCodeConf::InitializeVCode();

CSwVAlgConf::InitializeVAlgConf();

CSwConvTab::InitializeConTab();

CSwSignWordsList::InitializeSignWords();

CSwSignWordsList::ClearFile();

}


catch
(...){


return



false
;}


return



true
;}

AcsVCoding::AcsVCoding()

{

m_pCSwLstAlpWd =


new
CSwLstAlpWd();}

AcsWord AcsVCoding::GetWords(String* sentence)[]

{

CString input_word(sentence);

m_pCSwLstAlpWd->GenerateAlphaWord(input_word,


false
);

AcsWord tmp_array [] =


new
AcsWord[m_pCSwLstAlpWd->GetCount()];CSwAlphaWrd *pt = m_pCSwLstAlpWd->GetFirstWord();


int
i=0;


while
( pt != NULL ){

tmp_array[i].m_word = pt->GetIdxWord();

tmp_array[i].m_type = pt->GetTWWord();

pt = m_pCSwLstAlpWd->GetNextWord();

i++;

}


return
tmp_array;}


void
AcsVCoding::Dispose(

bool
disposing){


if
(m_pCSwLstAlpWd){


delete
m_pCSwLstAlpWd;m_pCSwLstAlpWd = NULL;

}


if
(disposing){

GC::SuppressFinalize(


this
);}

}

AcsVCoding::~AcsVCoding()

{

Dispose(


false
);}


void
AcsVCoding::Dispose(){

Dispose(


true
);}

}





hiso

7 réponses

Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007

Bon en fait, mon erreur venait d'un wrapping entre du code C# et du code C++.

Visual sait compiler les 2 mais pas les exécuter.

voilou,
Merci à :
gamemonde                et  lann
Membre Club
pour leurs réponses.

A bientot pour d'autres éventuels problèmes.

hiso
Messages postés
336
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
9 juillet 2011
2
bool
AcsVCoding::Init(String* user, String* pwd)

il manque le point virugule
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007

Ca peut pas être ça, puisque c une définition de fonction

boolAcsVCoding::Init(String* user, String* pwd)
{
      // corps de la fonction
}

Il ne manque donc pas de point virgule!?

D'ailleurs, mon prog compile et link. Le seul pb c qu'il s'arrête à l'endroit indiqué par le commentaire (voir code ci-dessus).
Quelqu'un a une idée?

Merci,

hiso
Messages postés
16
Date d'inscription
mercredi 30 octobre 2002
Statut
Membre
Dernière intervention
14 novembre 2007

C'est quoi la définition de la fonction :

CSwUtil::GetSgbdName()
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007

La voici:

int

CSwUtil::GetSgbdName(){

CString MethodName(_T("int CSwUtil::GetSgbdName()"));

if ( !m_isLoaded )LoadSettings();

if ( !m_sgbdName.Compare("MSSQL") )

return( CSwUtil::SQL7 );

if ( !m_sgbdName.Compare("SQL7.0") )

return( CSwUtil::SQL7 );

if ( !m_sgbdName.Compare("INFORMIX") )

return( CSwUtil::INFORMIX );

if ( !m_sgbdName.Compare("DB2") )

return( CSwUtil::DB2 );

if ( !m_sgbdName.Compare("ORACLE8i") )

return( CSwUtil::ORACLE8 ); CString tmp;

tmp.Format(IDE_SGBDNOTSUPPORTED);

throw
new CSwException (IDE_LOGIN,tmp, __FILE__, MethodName, __LINE__, FATAL);}

Je rajoute la définition de la fonction LoadSettings() en plus:

void

CSwUtil::LoadSettings(){

if ( m_isLoaded )

return;m_dsnName = GetSwProfileString("CONNECT","DBDSN",NULLCSTR);

if (m_dsnName.IsEmpty()){

m_dsnName = "SearchDSN";

WriteSwProfileString("CONNECT","DBDSN",m_dsnName);

}

m_dbName = GetSwProfileString("CONNECT","DBNAME",NULLCSTR);

if (m_dbName.IsEmpty()){

m_dbName = "kernel";

WriteSwProfileString("CONNECT","DBNAME",m_dbName);

}

m_dbServeur = GetSwProfileString("CONNECT","DBSERVER",NULLCSTR);

if (m_dbServeur.IsEmpty()){

m_dbServeur = "acseptoDB";

WriteSwProfileString("CONNECT","DBSERVER",m_dbServeur);

}

m_sgbdName = GetSwProfileString("CONNECT","SGBD",NULLCSTR);

if (m_sgbdName.IsEmpty()){

m_sgbdName = "undefined";

WriteSwProfileString("CONNECT","SGBD",m_sgbdName);

}

m_isLoaded = TRUE;

}

hiso
Messages postés
16
Date d'inscription
mercredi 30 octobre 2002
Statut
Membre
Dernière intervention
14 novembre 2007

vu qu'il te ramène un int, créé une variable int et récupère ce qu'il te ramène.
ca marchera peut être.

Lann
Messages postés
7
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
21 novembre 2007

C'est fait, voilà un morceau de la fonction AcsVCoding qui fait appel à la fonction:

#include

"stdafx.h"
#include

<stdio.h>
#include

"vcode.h"
#include

".\AcsVCoding.h"
using

namespace System::Runtime::InteropServices;
namespace

Acsepto{

bool AcsVCoding::Init(String* user, String* pwd){

// Modif 06/11/07 CSwUtil::LoadSettings();

int toto = CSwUtil::GetSgbdName();

if( !CSwUtil::InitAllDefines() )

return
false;

try{

//// Erreur de syntaxe

////------------------------

//CSwUtil::GetSgbdName();

////------------------------CSwUtil::DefineRootLogin( user,pwd);

CSwUtil::SetDefaultIdentify( user,pwd);

CSwUtil::LoadSettings();

/*if( !CSwUtil::InitAllDefines() )return false;*/

CSwVCodeConf::InitializeVCode();

CSwVAlgConf::InitializeVAlgConf();

CSwConvTab::InitializeConTab();

CSwSignWordsList::InitializeSignWords();

CSwSignWordsList::ClearFile();

}

catch(...){

return
false;}

return
true;}

 Les messages d'erreur renvoyés sont les suivants:

 1) CSwUtil::GetSgbdName() erreur : 'CSwUtil.GetSgbdName' n'est pas une fonction 
 2) CSwUtil::InitAllDefines() erreur : 'CSwUtil.InitAllDefines' n'est pas une fonction 
 3) erreur : 'CSwUtil.GetSgbdName' n'est pas une fonction erreur : l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe 
 4) erreur : 'CSwUtil.InitAllDefines' n'est pas une fonction erreur : l'expression ne peut pas être évaluée à cause d'une erreur de syntaxe 

 

hiso