Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Viivakoodin piirtäminen

Antti Laaksonen [08.04.2002 15:06:40]

#

Tämä VB-ohjelma piirtää halutusta tunnuksesta viivakoodin, jonka pitäisi suurinpiirtein vastata todellisuutta. Merkintätavat tosin vaihtelevat, joten ohjelman tekemä saattaa poiketa siitä, minkälainen jossain kirjassa tai pakkauksessa on. Jos koodin printtaa, sen pitäisi periaatteessa olla luettavissa viivakoodinlukijoilla. Ohjelma myös tarkistaa koodin oikeellisuuden.

Private Sub Form_Load()
    AutoRedraw = True
    ScaleMode = 3

    Dim koodi As String, tarkistus As Boolean
    Dim vasen As String, oikea As String, tark As Integer
    tarkistus = True 'tarkistetaanko viivakoodi

    Static Varit(1) As Long
    Varit(0) = BackColor
    Varit(1) = 0

    MerkitV = Array("0001101", "0011001", "0010011", "0111101", _
                       "0100011", "0110001", "0101111", "0111011", _
                       "0110111", "0001011")
    MerkitO = Array("1110010", "1100110", "1101100", "1000010", _
                       "1011100", "1001110", "1010000", "1000100", _
                       "1001000", "1110100")


    koodi = InputBox("Anna viivakoodi muodossa X XXXXXX XXXXXX:")
    vasen = Mid$(koodi, 3, 6)
    oikea = Mid$(koodi, 10, 6)

    If tarkistus Then
        For i = 1 To 6
            summa = summa + ((i Mod 2) * 2 + 1) * Val(Mid$(vasen, i, 1))
            If i <> 6 Then
                summa = summa + ((i Mod 2) * 2 + 1) * Val(Mid$(oikea, i, 1))
            End If
        Next
        summa = summa + Val(Left$(koodi, 1))
        tark = (Int(summa / 10) * 10 + 10) - summa
        If tark = 10 Then tark = 0
        If tark <> Val(Mid$(oikea, 6, 1)) Then
            MsgBox "Virheellinen viivakoodi!"
            End
        End If
    End If

    CurrentX = 10: CurrentY = 10
    Line Step(0, 0)-Step(0, 17 * 2)
    Line Step(2, -1)-Step(0, -17 * 2)
    suunta = 1
    For i = 1 To 6
        For j = 1 To 7
            Line Step(1, suunta)-Step(0, suunta * 14 * 2), Varit(Val(Mid$(MerkitV(Val(Mid$(vasen, i, 1))), j, 1)))
            suunta = -suunta
        Next
        CurrentX = CurrentX + 1
    Next
    Line Step(1, 1)-Step(0, 17 * 2)
    Line Step(2, -1)-Step(0, -17 * 2)
    For i = 1 To 6
        For j = 1 To 7
            Line Step(1, suunta)-Step(0, suunta * 14 * 2), Varit(Val(Mid$(MerkitO(Val(Mid$(oikea, i, 1))), j, 1)))
            suunta = -suunta
        Next
        CurrentX = CurrentX + 1
    Next
    Line Step(1, 1)-Step(0, 17 * 2)
    Line Step(2, -1)-Step(0, -17 * 2)

    Print: Print: Print
    Print "   " & koodi
End Sub

Jaakko [09.04.2002 19:57:36]

#

Päätit jatkaa hienojen tekemistä, Antti!

hotso [07.02.2003 19:53:26]

#

ÖÖÖ!Buu!Toiha tekee aina saman laisen viiva koodin!

Kulma [13.11.2005 17:43:20]

#

Toi väittää aina että se on virheellinen viiva koodi

miiro [28.12.2005 20:21:49]

#

Kulma, ton pitäis tehä EAN-13-viivakoodi.
Et varmaan pistäny siihen sellasta. Syötä siihen vaikka jostain mehutölkistä se viivakoodi ja muista ne välit! Tää viivakoodi ainaki toimii: 6 414881 643012

gamehouse [13.08.2007 13:13:24]

#

Hieno ohjelma! Teki muuten Aarrearkku- karkkipussin EAN- numerosta täsmälleen oikean viivakoodin!! (Taidan lisätä tuohon vielä tulostuksen!)

cadillac [04.11.2008 15:19:44]

#

herjaa meikäläisellä tuossa kohdassa

Line Step(0, 0)-Step(0, 17 * 2)
Line Step(2, -1)-Step(0, -17 * 2)

vinkkiä??

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta