Je cherche a traduire un code de VB vers VC++

JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008 - 18 déc. 2003 à 22:30
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008 - 19 déc. 2003 à 02:51
Je cherche a traduire un code VB en VC++ . . . Voici le code :
- - - - - -
Function le_jour(ByVal annee As Integer, ByVal mois As Integer, ByVal jour As Integer) As Integer
Dim w As Integer, wquotient, wremainder, int6
If mois = 1 Then
mois = 13
annee = annee - 1
ElseIf mois = 2 Then
mois = 14
annee = annee - 1
End If

int6 = 0.6 * (mois + 1)
int6 = Int(int6)

w = jour + 2 * mois + int6 + annee + Int(annee / 4) - Int(annee / 100) + Int(annee / 400) + 2
wquotient = Int(w / 7)
le_jour = (w - (wquotient * 7)) + 1
End Function
- - - - - - -

Ce que j'ai fait :

- - - - - - -
int _stdcall le_Jour (int annee, int mois, int jour)
{
int w, wquotient, int6;

if (mois == 1) {
mois = 13;
annee --;
}
else if (mois == 2) {
mois = 14;
annee --;
}

int6 = ((int)(0.6 * (mois + 1)));// <- pose probleme

w = jour + 2 * mois + int6 + annee;
w = w + ((int)(annee/4)) - ((int)(annee/100)) + ((int)(annee/400)) + 2;
wquotient = (int)(w/7);

return ((w-(wquotient * 7)) + 1);}
- - - - - - -
Je trouve pas l'equivalent pour la fonction INT de vb en C++. Je dois faire une division et oublier le reste et retourner un integer et non un float . . .

Le probleme et que c'est dans une DLL et que le resultat une fois instancier dans un projet vb est variable de 1. Celle codé en VB fonctionne a 100%.

Merci de m'aider !

3 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 déc. 2003 à 00:32
int valEnt =(int) (annee / 100.0f);

ou

int valEnt =(int) ((float)annee / 100);
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
19 déc. 2003 à 00:38
OUPS, j'ai mal vu où se situait le pb, en fait ça devrait marcher ce que tu as fait.
La fonction Int de VB fait une troncature ou un arrondi?
0
JoePatent Messages postés 171 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 20 juillet 2008
19 déc. 2003 à 02:51
http://www.joepatent.comJoe Patent
tu ne me croiras pas, mais tu me donne ton adresse email je vais t'envoyé le projet.

Voici le code en vb
msgbox le_Jour (2008,2,1)
msgbox Val(textbox) <> 2003
msgbox le_Jour(2008,2,1)

cela affiche ceci . . .
7
false
6

! ! !
Si je ne fais pas de VAL ca affiche 2 fois la valeur 7... En fait si je fais un Val tout seul {msgbox Val(textbox)} ca affiche aussi 2 fois la valeur 7.

Autre precision. J'ai cet ecart de 1 a la baisse seulement pour le mois de fevrier ! ! ! Tous les autres mois sont beaux ! C'est a ni rien comprendre ! Peut importe l'année, le premier jour du mois de février est décaller de 1.

Alors je cherche le probleme... Je suis médusé complètement.
0
Rejoignez-nous