"Je ne comprend pas pk on m'a supprim� mon premier message !!!!!
tous les details et les explications �taient dedans"
Bref, ce n'est pas grave !!!!!!!!!!!!!!!!!!!!!!!!!!!
Je vais essayer de REexpliker le probleme;
En faite le probleme ds
Mon programme est que je n'arrive pas a acceder aux champs de ma base de donnees quand il s'ont tap� ainsi :
'0.4/5+.056/6'
Ma base de donn�e je l'ai edit� en paradox;
Tous mes champs sont de type AlphaNumerique;
il y a des champs qui representent des entier des r�el ou des distributions de possibilit�s
ce dernier champs pri dans lexemple repr�sente une distrbution de possibilit�!!!
je dois recuperer les 4 valeurs dans un tableau, mais je n'arrive meme pas a acceder a ce type de champ(distribution de possibilit�)!!!!!
Fonction qui renvoit le type de la chaine de caract�re, entier, r�el ou distribution de possibilit�s
*********************************************************
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 int type_chaine (char *t) { bool trouve=false ; char *nptr; nptr=t; while (*nptr!='\0' && !trouve ) { if (*nptr=='/') trouve =true ; nptr++; } if (trouve) return (2); //Si c'est une distribution de possibilit� alors elle renvoit 2 else { nptr=t; while (*nptr!='\0' && !trouve) { if (*nptr==',') trouve =true ; nptr++; } if (trouve) return (1); //Si c'est un r�el elle renvoit 1 else return (0); // si c'est un entier c'est 0 } };
********************************************************Fonction de conversion dans le cas d'une distribution de possibilit�s
********************************************************
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 float * convert_POSS(const string &item) { float *resultat = (float*)calloc(20,sizeof(float)); char c; istringstream donnees; int i = 0; donnees.str(item); while (donnees >> resultat[i++]) { donnees >> c; } return resultat; }
Fonction qui charge les champs des attributs choisits dans Le tableau
Puis dans un boutton j'ai ecris cett fonction "remplir()";
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 void TA::remplir() { int l; tab =new char [50]; Table1->First(); for(l=0; l<nb_enrg; l++) // nb-enrg est le nombre d'enregistrements de la BD que je r�cup�re au debut { *tab= Table1->FieldValues[ptr_at->nom]; //"ptr_at->nom" contient le nom de l'attribut que j'ai choisit de traiter typ=type_chaine(tab); if ((typ==0)||(typ==1)) don [l]=Table1->FieldValues[ptr_at->nom]; else don[l]=-1;// si c'est un distributon de possibilit� alors mettre un -1 dans ce tableau // Normalement je dois ensuite remplir les chiffre de cet distr de poss dans un autre tableau de tableaux // Mais je ne l'ai pas encore fais, car je ne sais pas comment!!!!! /* if (i< nb_poss) for (int j=0; j<20; j++) { tab1[i].possibilites = convert_POSS(tab) ; i++; } */ } Table1->Next(); } }
et c'est quand j'appuis dessus, comme je l'ai pr�cis� en haut, que j'ai le message d'erreur Impossible de convertir le variant de type (string) en type (integer) ,quand le champs contient un nombre qui n'est pas un entier ou un r�el.
Car quand il s'agit d'un champs qui contien un nombre r�el ou entier, ca ne bug pas, et ca marche.
SVP SVP SVP, aidez moi a resoudre ce probleme, j'ai vraiment une contrainte de temps qui me presse, et il faut que je termine mon appliction, car ca ce n'est que le debut. c'est mon projet de fin d'etudes et je bloque vraiment dessus...
Merci d'avance de m'aider.
Partager