Szükségem lenne EAN13 típusú vonalkódokat generálni. Azt tudom, hogy a 13. karakter egy ellenőrző érték. Ezt hogy kell kiszámolni?
Tisztelettel, kalmann
EAN13 vonalkód generálása
Re: EAN13 vonalkód generálása
Ellenőrző szám kiszámítása:
A vonalkód minden páratlan helyén lévő (1., 3., 5...) számjegyét 1-el, a páros helyeken állókat pedig 3-al kell szorozni, majd a kapott szorzatokat össze kell adni. A 13. számjegy az a szám, melyet ehhez az összeghez kell adni, hogy a következő, tízzel osztható számot kapjuk.
Az EAN 13 típusú vonalkód a legelterjedtebb formátum a kereskedelemben. Az EAN 13 vonalkód 13 karaktert kódol: az első két vagy három számjegy az országkód. Az országkód után 9 vagy 10 további szám található (termék azonosító), majd az ellenőrző szám (checksum).
Az EAN 13 vonalkód 2, vagy 5 számjeggyel bővíthető, így lehetséges a 14 vagy 17 hosszúságú vonalkód.
Az ellenőrző szám a következő módon képződik:
1. Páros számú számjegyek összeadása: (2, 4, 6...)
2. Az eredményt meg kell szorozni hárommal.
3. Páratlan számú számjegyek összeadása: 1, 3, 5...
4. A két végeredmény összeadása.
5. A checksum karakter a legkisebb szám mely a 4. lépéshez adható, hogy a 10 többszöröse legyen az eredmény.
Például a vonalkód: 001234567890
0+2+4+6+8+0 = 20
20*3 = 60
0+1+3+5+7+9 = 25
60+25 = 85
85+X = 90 (10 többszöröse legyen az eredmény), tehát X = 5 (checksum)
A vonalkód minden páratlan helyén lévő (1., 3., 5...) számjegyét 1-el, a páros helyeken állókat pedig 3-al kell szorozni, majd a kapott szorzatokat össze kell adni. A 13. számjegy az a szám, melyet ehhez az összeghez kell adni, hogy a következő, tízzel osztható számot kapjuk.
Az EAN 13 típusú vonalkód a legelterjedtebb formátum a kereskedelemben. Az EAN 13 vonalkód 13 karaktert kódol: az első két vagy három számjegy az országkód. Az országkód után 9 vagy 10 további szám található (termék azonosító), majd az ellenőrző szám (checksum).
Az EAN 13 vonalkód 2, vagy 5 számjeggyel bővíthető, így lehetséges a 14 vagy 17 hosszúságú vonalkód.
Az ellenőrző szám a következő módon képződik:
1. Páros számú számjegyek összeadása: (2, 4, 6...)
2. Az eredményt meg kell szorozni hárommal.
3. Páratlan számú számjegyek összeadása: 1, 3, 5...
4. A két végeredmény összeadása.
5. A checksum karakter a legkisebb szám mely a 4. lépéshez adható, hogy a 10 többszöröse legyen az eredmény.
Például a vonalkód: 001234567890
0+2+4+6+8+0 = 20
20*3 = 60
0+1+3+5+7+9 = 25
60+25 = 85
85+X = 90 (10 többszöröse legyen az eredmény), tehát X = 5 (checksum)
Kód: Egész kijelölése
function GenEAN13(mKod: String): String;
var
i,CalcChecksum,chk: integer;
Odd: boolean;
begin
CalcChecksum := 0;
i := Length(mKod);
Odd := True;
while i > 0 do begin
If Odd then
CalcChecksum := CalcChecksum + StrToInt(mKod[i]) * 3
else
CalcChecksum := CalcChecksum + StrToInt(mKod[i]);
Odd := not Odd;
Dec(i);
end;
chk := 0;
While ((CalcChecksum + chk) mod 10) <> 0 do Inc(chk);
Result := mKod + InttoStr(chk);
end;
Üdv.: gaborg