none
Função para gerar código de barras

    Question

  • Olá pessoal,

    Tenho a função abaixo, mas está dando erro na linha destacada de vermelho. O erro retornado é:

    Code Snippet

    Conversion from string ".1" to type 'Integer' is not valid.



    Já a linha em azul, tive que alterá-la para a linha a seguir (em negrito) pois retornava a mensagem:

    Code Snippet

    Error 105 'empty' is not declared. 'Empty' constant is no longer supported; use 'Nothing' instead.



    Função:

    Code Snippet

    '-----------------------------------------------------
    'Funcao: getCodigoBarras(ByVal Numeros)
    'Sinopse: Rotina para gerar códigos de barra padrão 2of5 ou 25.
    'Parametro:
    ' Numeros: Números para a geração do código de barras
    'Retorno: String (HTML com o código gerado)
    'Exemplo de geração do código de barras
    'Substitua o valor do parâmetro abaixo pelo número do código de barras.
    'Response.Write getCodigoBarras("7890552007601")
    '-----------------------------------------------------
    Function getCodigoBarras(ByVal Numeros)
    Dim F, F1, F2, i, Texto
    Dim arrCodigoBarra(99)
    Dim htmlCodigoBarra
    htmlCodigoBarra = ""
    Const Fino = 1
    Const Largo = 3
    Const Altura = 50

    'If is empty(arrCodigoBarra(0)) Then
    If Nothing Then
    arrCodigoBarra(0) = "00110"
    arrCodigoBarra(1) = "10001"
    arrCodigoBarra(2) = "01001"
    arrCodigoBarra(3) = "11000"
    arrCodigoBarra(4) = "00101"
    arrCodigoBarra(5) = "10100"
    arrCodigoBarra(6) = "01100"
    arrCodigoBarra(7) = "00011"
    arrCodigoBarra(8) = "10010"
    arrCodigoBarra(9) = "01010"
    For F1 = 9 To 0 Step -1
    For F2 = 9 To 0 Step -1
    F = F1 * 10 + F2
    Texto = ""
    For i = 1 To 5
    Texto = Texto & Mid(arrCodigoBarra(F1), i, 1) + Mid(arrCodigoBarra(F2), i, 1)
    Next
    arrCodigoBarra(F) = Texto
    Next
    Next
    End If

    'Construindo o código HTML do código de barras
    'Guarda inicial
    htmlCodigoBarra = htmlCodigoBarra & "<img src=p.png width=" & Fino & " height=" & Altura & " border=0>"
    htmlCodigoBarra = htmlCodigoBarra & "<img src=b.png width=" & Fino & " height=" & Altura & " border=0>"
    htmlCodigoBarra = htmlCodigoBarra & "<img src=p.png width=" & Fino & " height=" & Altura & " border=0>"
    htmlCodigoBarra = htmlCodigoBarra & "<img src=b.png width=" & Fino & " height=" & Altura & " border=0>"
    htmlCodigoBarra = htmlCodigoBarra & "<img"
    'Response.Write htmlCodigoBarra
    Texto = Numeros
    If Len(Texto) Mod 2 <> 0 Then
    Texto = "0" & Texto
    End If
    'HTML dos dados
    Do While Len(Texto) > 0
    i = CInt(Left(Texto, 2))
    Texto = Right(Texto, Len(Texto) - 2)
    F = arrCodigoBarra(i)
    For i = 1 To 10 Step 2
    If Mid(F, i, 1) = "0" Then
    F1 = Fino
    Else
    F1 = Largo
    End If

    htmlCodigoBarra = htmlCodigoBarra & " src=p.png width=" & F1 & " height=" & Altura & " border=0><img"

    If Mid(F, i + 1, 1) = "0" Then
    F2 = Fino
    Else
    F2 = Largo
    End If

    htmlCodigoBarra = htmlCodigoBarra & " src=b.png width=" & F2 & " height=" & Altura & " border=0><img"

    Next
    Loop

    'Guarda final
    htmlCodigoBarra = htmlCodigoBarra & " src=p.png width=" & Largo & " height=" & Altura & " border=0>"
    htmlCodigoBarra = htmlCodigoBarra & "<img src=b.png width=" & Fino & " height=" & Altura & " border=0>"
    htmlCodigoBarra = htmlCodigoBarra & "<img src=p.png width=1 height=" & Altura & " border=0>"

    'Retornando a função
    getCodigoBarras = htmlCodigoBarra
    End Function


    Como posso corrigir isso?

    Grato,

    Ilano.
    Friday, July 18, 2008 12:49 PM

Answers

  • Realmente se nao estiver entrando no if pode gerar um código barras errado.

    IIano, testei a funçao aqui IsEmpty e funcionou perfeitamente, mas em todo caso tente com a instruçao abaixo:

     

    If len(arrCodigoBarra(0)) <= 0 Then

     

    Se der erro envio o código da pagina completa.

     

    Abraços

     

    Estevam

    Friday, July 18, 2008 2:35 PM

All replies

  • IIlano,

     

    Esta linha abaixo:

    'If is empty(arrCodigoBarra(0)) Then

     

    deve ficar assim:

    If isEmpty(arrCodigoBarra(0)) Then

     

    E na linha em vermelho tenta fazer assim:

    i = CInt( Trim( Replace(Left(Texto, 2),".","") ) )

     

     

    Abraços

     

    Estevam

     

     

     

    Friday, July 18, 2008 1:47 PM
  • Olá Luiz Estevam,

    Desde já agradeço sua atenção.
    Bem, agora a função está sendo executada sem problemas, porém, mesmo alterando a linha

    If isEmpty(arrCodigoBarra(0)) Then

    Ainda diz:

    Error    104    Name 'isempty' is not declared.

    Outra coisa, é que, pegando um boleto bancário, digitei o número que fica logo acima (linha digitável) e me foi gerado um código de barras imenso ultrapassando a largura do boleto, completamente diferente daquele que está no boleto de onde peguei a linha digitável. Alguma dica a respeito disso? Ou será q o problema está por causa daquela linha acima (em azul)? Preciso importar alguma coisa para q aquela linha seja aceita na função?

    Mais uma vez agradeço sua atenção.
    Friday, July 18, 2008 2:09 PM
  • Realmente se nao estiver entrando no if pode gerar um código barras errado.

    IIano, testei a funçao aqui IsEmpty e funcionou perfeitamente, mas em todo caso tente com a instruçao abaixo:

     

    If len(arrCodigoBarra(0)) <= 0 Then

     

    Se der erro envio o código da pagina completa.

     

    Abraços

     

    Estevam

    Friday, July 18, 2008 2:35 PM
  • Perfeito!

    Obrigadão Luiz Estevam.

    Já marquei como resposta!!!
    Friday, July 18, 2008 2:50 PM
  •  Amigo ilanocf,

    estou com problemas para gerar um boleto bancario com codigo de barras 2 5
    não estou achando compoentes free.

    Então achei o seu post onde vc desenvolveu uma função para garar codigo de barras
    parece ser em vb, eu trabalho com c#, mas sem problemas posso utilizar essa função sem problemas

    mas é pra asp net ?

    Voce pode mandar pra mim o seu codigo ?

    te agrdeço desde de já


    Wagner N Neves


    wagner.n@hotmail.com    
    Monday, March 23, 2009 11:18 AM