VB6 --> c#

paloxicide Messages postés 225 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 20 juin 2006 - 25 août 2005 à 16:16
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 - 25 août 2005 à 17:51
J'ai cette fonction à traduire!!!

Un de vous pourrais m'aider, je galère

Public Function Code128$(chaine$)
'V 1.1.0
'Paramètres : une chaine
'Parameters : a string
'Retour : * une chaine qui, affichée avec la police CODE128.TTF, donne le code barre
' * une chaine vide si paramètre fourni incorrect
'Return : * a string which give the bar code when it is dispayed with CODE128.TTF font
' * an empty string if the supplied parameter is no good
Dim i%, checksum&, mini%, dummy%, tableB As Boolean
Code128$ = ""
If Len(chaine$) > 0 Then
'Vérifier si caractères valides
'Check for valid characters
For i% = 1 To Len(chaine$)
Select Case Asc(Mid$(chaine$, i%, 1))
Case 32 To 126, 198
Case Else
i% = 0
Exit For
End Select
Next
'Calculer la chaine de code en optimisant l'usage des tables B et C
'Calculation of the code string with optimized use of tables B and C
Code128$ = ""
tableB = True
If i% > 0 Then
i% = 1 'i% devient l'index sur la chaine / i% become the string index
Do While i% <= Len(chaine$)
If tableB Then
'Voir si intéressant de passer en table C / See if interesting to switch to table C
'Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits mini% IIf(i% 1 Or i% + 3 = Len(chaine$), 4, 6)
GoSub testnum
If mini% < 0 Then 'Choix table C / Choice of table C
If i% = 1 Then 'Débuter sur table C / Starting with table C
Code128$ = Chr$(205)
Else 'Commuter sur table C / Switch to table C
Code128$ = Code128$ & Chr$(199)
End If
tableB = False
Else If i% 1 Then Code128$ Chr$(204) 'Débuter sur table B / Starting with table B
End If
End If
If Not tableB Then
'On est sur la table C, essayer de traiter 2 chiffres / We are on table C, try to process 2 digits
mini% = 2
GoSub testnum
If mini% < 0 Then 'OK pour 2 chiffres, les traiter / OK for 2 digits, process it
dummy% = Val(Mid$(chaine$, i%, 2))
dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
Code128$ = Code128$ & Chr$(dummy%)
i% = i% + 2
Else 'On n'a pas 2 chiffres, repasser en table B / We haven't 2 digits, switch to table B
Code128$ = Code128$ & Chr$(200)
tableB = True
End If
End If
If tableB Then
'Traiter 1 caractère en table B / Process 1 digit with table B
Code128$ = Code128$ & Mid$(chaine$, i%, 1)
i% = i% + 1
End If
Loop
'Calcul de la clé de contrôle / Calculation of the checksum
For i% = 1 To Len(Code128$)
dummy% = Asc(Mid$(Code128$, i%, 1))
dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 100) If i% 1 Then checksum& dummy%
checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
Next
'Calcul du code ASCII de la clé / Calculation of the checksum ASCII code
checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 100)
'Ajout de la clé et du STOP / Add the checksum and the STOP
Code128$ = Code128$ & Chr$(checksum&) & Chr$(206)
End If
End If
Exit Function
testnum:
'si les mini% caractères à partir de i% sont numériques, alors mini%=0
'if the mini% characters from i% are numeric, then mini%=0
mini% = mini% - 1
If i% + mini% <= Len(chaine$) Then
Do While mini% >= 0
If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
mini% = mini% - 1
Loop
End If
Return
End Function

Merci

7 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
25 août 2005 à 16:24
Montre ou tu galères ou ce que tu as fait. Ya pas moyen qu'on te traduise ce paté comme çà.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
25 août 2005 à 16:29
tu m'excuseras d'être aussi directe mais ce code est "pourri"... c'est du VB4 ???
l'utilisation des suffixes $, %, &... est totalement déconseillée en VB6 !

Sébastien FERRAND
0
paloxicide Messages postés 225 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 20 juin 2006 1
25 août 2005 à 16:33
Je te mets ce que je sais pas faire

Len(chaine$)
GoSub testnum

dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)

Chr$(checksum&) & Chr$(206)

Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do

Code128$ = Code128$ & Mid$(chaine$, i%, 1)

Select Case Asc(Mid$(chaine$, i%, 1))
Case 32 To 126, 198
Case Else
i% = 0
0
paloxicide Messages postés 225 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 20 juin 2006 1
25 août 2005 à 16:36
connais ni vb4 ni 6 alors mais je me doute que les % fo les virés
0

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

Posez votre question
paloxicide Messages postés 225 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 20 juin 2006 1
25 août 2005 à 16:38
Select Case Asc(Mid$(chaine$, i%, 1))
Case 32, 36, 37, 43, 45 To 57, 65 To 90
Case Else
i% = 0
Exit For
End Select

ca aussi c po traduire
0
Fildomen Messages postés 805 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 30 octobre 2010
25 août 2005 à 16:43
pooooof, ou est mon vb de là !!c obfuscaté?? , ben ou tu te bloke dans la conversion???

YaoYao !!
1 + 1 = 10
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
25 août 2005 à 17:51
C'est pas possible, c'est du Qbasic ou quoi ... avec un gosub en plus ... abandonne la conversion, et réécrit completement!
0
Rejoignez-nous