VB6 --> c#

Signaler
Messages postés
225
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
20 juin 2006
-
Messages postés
721
Date d'inscription
dimanche 10 juin 2001
Statut
Membre
Dernière intervention
27 mars 2011
-
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

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Montre ou tu galères ou ce que tu as fait. Ya pas moyen qu'on te traduise ce paté comme çà.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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
Messages postés
225
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
20 juin 2006
1
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
Messages postés
225
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
20 juin 2006
1
connais ni vb4 ni 6 alors mais je me doute que les % fo les virés
Messages postés
225
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
20 juin 2006
1
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
Messages postés
805
Date d'inscription
jeudi 22 mai 2003
Statut
Membre
Dernière intervention
30 octobre 2010

pooooof, ou est mon vb de là !!c obfuscaté?? , ben ou tu te bloke dans la conversion???

YaoYao !!
1 + 1 = 10
Messages postés
721
Date d'inscription
dimanche 10 juin 2001
Statut
Membre
Dernière intervention
27 mars 2011
7
C'est pas possible, c'est du Qbasic ou quoi ... avec un gosub en plus ... abandonne la conversion, et réécrit completement!