Generer codebar 128 en vb.net 2005

elmeksaoui1 28 Messages postés mercredi 29 octobre 2008Date d'inscription 25 février 2016 Dernière intervention - 24 févr. 2016 à 11:13 - Dernière réponse : elmeksaoui1 28 Messages postés mercredi 29 octobre 2008Date d'inscription 25 février 2016 Dernière intervention
- 25 févr. 2016 à 12:07
Bonjour ,

j'ai ce code qui generer code 128 mais programmer en vb6 utise police CODE128.TTF ,et jai la converter en vb.net mais ca marche pas ,si quelqu'un peux m'aide de faire ca ?

Public Function Code128$(chaine$)
  'V 2.0.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, 203
      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$(210)
            Else 'Commuter sur table C / Switch to table C
              Code128$ = Code128$ & Chr$(204)
            End If
            tableB = False
          Else
            If i% = 1 Then Code128$ = Chr$(209) '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% + 105)
            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$(205)
            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% - 105)
        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& + 105)
      'Ajout de la clé et du STOP / Add the checksum and the STOP
      Code128$ = Code128$ & Chr$(checksum&) & Chr$(211)
    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 

Private Sub Text1_TextChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Text1.TextChanged
  Dim CodeBarre As String
  CodeBarre = code128(Text1.Text)
  label5.Text = CodeBarre
        label1.Text = CodeBarre
 End Sub



*
    • Merci de m aide
Afficher la suite 

5 réponses

Répondre au sujet
Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention - 24 févr. 2016 à 14:07
0
Utile
2
Bonjour elmeksaoui1.

Pour avoir un Vb net propre (qui ne bave pas sur Vb 6), ouvrir My project, puis
– dans l'onglet Compiler,
––– mettre Option Explicit sur ON,
––– mettre Option Strict sur ON,
––– mettre Option Infer sur Off,
– dans l'onglet Références, désactiver Microsoft.
Cordialement.
Zermelo 378 Messages postés samedi 22 septembre 2012Date d'inscription 13 août 2017 Dernière intervention - 24 févr. 2016 à 20:09
Vous ne savez pas, ou vous ne voulez pas ?
elmeksaoui1 28 Messages postés mercredi 29 octobre 2008Date d'inscription 25 février 2016 Dernière intervention - 25 févr. 2016 à 11:54
Merci a votre réponse j' ai teste ça mais rien n'a changé,
Commenter la réponse de Zermelo
Whismeril 11409 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 21 avril 2018 Dernière intervention - 25 févr. 2016 à 08:12
0
Utile
1
Bonjour

il existe plein de sources disponibles, par exemple ici
https://barcoderender.codeplex.com
https://freebarcode.codeplex.com/

C'est du C#, donc du .Net, un petit coup de traducteur en ligne et voilà....
elmeksaoui1 28 Messages postés mercredi 29 octobre 2008Date d'inscription 25 février 2016 Dernière intervention - 25 févr. 2016 à 12:07
Merci Whismeril pour ces sources qui utilisent les DLL,mais je veux utilise la fonction qui calcule les caractères comme ci-dessus ( creer en vb6) en vb.net ?
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.