Erreur de syntaxe C++

Résolu
hisoka7 Messages postés 7 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 novembre 2007 - 31 oct. 2007 à 17:29
hisoka7 Messages postés 7 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 novembre 2007 - 21 nov. 2007 à 09:49
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

hisoka7 Messages postés 7 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 novembre 2007
21 nov. 2007 à 09:49
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
3
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
1 nov. 2007 à 10:21
bool
AcsVCoding::Init(String* user, String* pwd)

il manque le point virugule
0
hisoka7 Messages postés 7 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 novembre 2007
2 nov. 2007 à 09:51
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
0
cs_lann Messages postés 16 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 14 novembre 2007
13 nov. 2007 à 18:55
C'est quoi la définition de la fonction :

CSwUtil::GetSgbdName()
0

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

Posez votre question
hisoka7 Messages postés 7 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 novembre 2007
14 nov. 2007 à 17:23
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
0
cs_lann Messages postés 16 Date d'inscription mercredi 30 octobre 2002 Statut Membre Dernière intervention 14 novembre 2007
14 nov. 2007 à 18:29
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
0
hisoka7 Messages postés 7 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 novembre 2007
15 nov. 2007 à 09:57
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
0
Rejoignez-nous