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

Signaler
Messages postés
171
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
20 juillet 2008
-
Messages postés
171
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
20 juillet 2008
-
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

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
int valEnt =(int) (annee / 100.0f);

ou

int valEnt =(int) ((float)annee / 100);
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
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?
Messages postés
171
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
20 juillet 2008

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.