rss LEGFRISSEBB TÉMÁK Csatlakozz új fórumunkhoz...

EAN13 vonalkód generálása

Delphi programozási fórum.
kalmann
Hozzászólások: 2
Csatlakozott: 2016.09.27. 09:55

EAN13 vonalkód generálása

HozzászólásSzerző: kalmann » 2016.09.28. 09:16

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

gaborg
Hozzászólások: 18
Csatlakozott: 2016.08.04. 01:23

Re: EAN13 vonalkód generálása

HozzászólásSzerző: gaborg » 2016.09.28. 13:01

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)


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


Vissza: “Delphi”