Convertir VB6 en C++

Tybbow Messages postés 1 Date d'inscription vendredi 14 décembre 2007 Statut Membre Dernière intervention 22 juillet 2008 - 22 juil. 2008 à 15:52
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014 - 24 juil. 2008 à 23:38
Bonjour, j'aimerais convertir un code créé en VB6 vers le C++, malheureusement, je n'y connais rien en C++, j'ai essayé de trouver des logiciels, mais aucun n'est fiable à 100%. J'aurais voulu une peu d'aide, merci!

Option Explicit: Option Base 1Sub calculs(): Unload Form1: Dim n As Integer, fs As Object, a As String: n Form1.n: a Right("000" & CStr(n), 3)
Set fs = CreateObject("Scripting.FileSystemObject"): If fs.folderexists("c:\Test\hyperplan" & a) Then MsgBox ("Dossier  " & a & "  existant::Le détruire - avec son contenu- avant de refaire les calculs !!"): Exit Sub Else MkDir "c:\Test\hyperplan" & a: MsgBox ("Démarrage:: Clic sur OK ")Dim supp() As Byte, k As Integer, tmp As Integer, x As Integer, b As String: x n - 1: If x > 25 Then x 25
Dim i As Integer, ix As Integer, j As Integer, r As Integer, pro As Integer, sig As Integer, ssp As String, ssn As String, ss As String, det() As Integer, snt() As Integer, res() As Integer: ReDim det(n): ReDim snt(n): ReDim res(n)For k 1 To x: b Right("00" &amp; CStr(k), 2): Erase supp: ReDim supp(n - 1, n): Open "c:\Test\hyperplan" &amp; a &amp; "" &amp; b &amp; ".txt" For Output As #1: Close #1For tmp 1 To k: supp(1, tmp) 1: Next tmp: ix = 1cc: For i ix + 1 To n - 1: For j 1 To n: supp(i, j) = supp(i - 1, j): Next jtmp 0: For j n To 1 Step -1: If supp(i, j) = 0 Then tmp = j: GoTo jjIf tmp <> 0 Then supp(i, j) 0: supp(i, tmp) 1: GoTo rr
jj: Next j: ix = i - 1: GoTo ffrr: For j tmp + 1 To n: If supp(i, j) 1 Then GoTo jjjFor r j + 1 To n: If supp(i, r) 1 Then supp(i, j) = 1: supp(i, r) = 0: GoTo jjj
Next r
jjj: Next jNext i: For i 1 To n: det(i) i: Next i: sig = 1: pro = 0aa: For i 2 To n: sig sig * supp(i - 1, det(i)): Next i: pro = pro + sigFor i n - 1 To 1 Step -1: sig n + 1: For j = i + 1 To n: If det(j) > det(i) And det(j) < sig Then sig = det(j): tmp = jNext j: If sig < n + 1 Then sig det(i): det(i) det(tmp): det(tmp) = sig: tmp = i + 1: GoTo ran
Next i: res(n) = pro: GoTo bbran: If tmp 2 Then res(det(1) - 1) pro: pro = 0
For i = 1 To n: If i < tmp Then GoTo rani
For j = i + 1 To n: If j < tmp Then GoTo ranjIf det(j) < det(i) Then sig det(i): det(i) det(j): det(j) = sig
ranj: Next jrani: Next i: sig 1: For i 1 To n: snt(i) = det(i): Next i: For i = 1 To n - 1
If snt(i) <> i ThenFor j i + 1 To n: If snt(j) i Then snt(j) = snt(i): sig = -sig: GoTo sigi
Next j: End If
sigi: Next i: GoTo aabb: tmp 0: For i 1 To n: If res(i) = 0 Then GoTo eeIf tmp 0 Then tmp Abs(res(i)) Else r = Abs(res(i)): sig = (tmp + r + Abs(tmp - r)) / 2: pro = (tmp + r - Abs(tmp - r)) / 2: Do Until pro = 0: r = pro: pro = sig Mod pro: sig = r: Loop: tmp = ree: Next i: If tmp 0 Then ix n - 1: GoTo ffFor i 1 To n: res(i) res(i) / tmp: If Abs(res(i)) > 675 Then MsgBox ("Absolue > 675 !!  M'avertir !! "): Exit SubNext i: ssp "": ssn "": For i = 1 To n: If res(i) = 0 Then ssp = ssp &amp; "ZZ": ssn = ssn &amp; "ZZ"
If res(i) > 0 Thenr res(i) Mod 26: If r 0 Then ss = "z" Else ss = Chr(64 + r)r (res(i) - r) / 26: If r 0 Then ssp = ssp &amp; "z" &amp; ss Else ssp = ssp &amp; Chr(64 + r) &amp; ssr res(i) Mod 26: If r 0 Then ss = "z" Else ss = Chr(96 + r)r (res(i) - r) / 26: If r 0 Then ssn = ssn &amp; "z" &amp; ss Else ssn = ssn &amp; Chr(96 + r) &amp; ss
End If
If res(i) < 0 Thenr (-res(i)) Mod 26: If r 0 Then ss = "z" Else ss = Chr(96 + r)r (-res(i) - r) / 26: If r 0 Then ssp = ssp &amp; "z" &amp; ss Else ssp = ssp &amp; Chr(96 + r) &amp; ssr (-res(i)) Mod 26: If r 0 Then ss = "z" Else ss = Chr(64 + r)r (-res(i) - r) / 26: If r 0 Then ssn = ssn &amp; "z" &amp; ss Else ssn = ssn &amp; Chr(64 + r) &amp; ss
End If: Next i: Open "c:\Eternity\hyperplan" &amp; a &amp; "" &amp; b &amp; ".txt" For Input As #1: If EOF(1) Then Close #1: GoTo ttDo Until EOF(1): Line Input #1, ss: If ss ssp Or ss ssn Then Close #1: ix = n - 1: GoTo ff
Loop: Close #1
tt: Open "c:\Eternity\hyperplan" &amp; a &amp; "" &amp; b &amp; ".txt" For Append As #1: Print #1, ssp: Close #1: ix = n - 1ff: tmp 0: For j n To 1 Step -1: If supp(ix, j) = 0 Then tmp = j: GoTo supjIf tmp <> 0 Then supp(ix, j) 0: supp(ix, tmp) 1: GoTo supr
supj: Next j: If ix > 1 Then ix = ix - 1: GoTo ff Else GoTo finsupr: For j tmp + 1 To n: If supp(ix, j) 1 Then GoTo supjjFor r j + 1 To n: If supp(ix, r) 1 Then supp(ix, j) = 1: supp(ix, r) = 0: GoTo supjj
Next r
supjj: Next j: GoTo cc
fin: Next k: MsgBox ("TERMINE !"): End Sub

3 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juil. 2008 à 18:39
Apprends déjà à bien coder en VB6 ! Il ne faut pas utiliser de goto !
Et pour le reste on ne va pas te faire ça à ta place.
En plus la conversion de VB à C++ n'est pas évidente : on ne code pas de la même façon !
Pour apprendre le C++ : soit du t'achètes un bon livre, soit tu cherches des tutoriels sur le net.
Il y en a un très bon sur le Site du Zéro (mais tu dois passer par le tuto C avant le C++) : http://www.siteduzero.com/tuto-3-8-0-apprenez-a-programmer-en-c.html
_______________________________________________________________________
VB.NETis good ...VB6is better
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 juil. 2008 à 19:26
Faisons abstraction du listing plus haut, pas d'indentation du code et trop d'instructions sur la même ligne, je ne lis pas.

il ne "faut" pas de Goto....
La prog n'est pas une secte, les tabous n'y ont pas leur place. Un goto judicieux qui éviterait des tas de IF imbriqués ou autres acrobaties de code ne nuirait en rien, bien au contraire.

ciao...
BruNews, MVP VC++
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
24 juil. 2008 à 23:38
La peur des gotos c'est comme les limites de vitesse, elle est fixe, selon les conditions on peut rouler sans danger au dessus de la limite. Mais la limite à été fixé pour les abrutis qui préfère avoir un jugement deja fait et fixe peu importe ce qui se passe même si c'est cruellement inéfficace.

Cela dit faudrais vraiment envisager de supprimer directement les demandes du type faite ce code pour moi.

http://laptopgun.blogspot.com/
&
0
Rejoignez-nous