知/Delphi

[바코드] EAN-13 체크 디지트 구하는 루틴

채수욱 2008. 7. 18. 04:15

{-------------------------------------------------------------------------------
 1. 시스템  명: NeoSimzi
 2. 함  수  명: Barcode_CheckDigit_F
 3. 설      명: 바코드 checkDigit
 4. 리  턴  값:
 5. 작  성  일: 2002-09-15
 6. 주의  사항:
 7. 수정  내역:  make By Yeol
-------------------------------------------------------------------------------}
function Barcode_CheckDigit_F(code: string):string;
var
   i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12 : integer;
   ia, ib, ic : integer;
begin
     result:=code;

     if (Length(code) = 12) then begin
        i1 := strtoint(Copy(code,1,1));
        i2 := strtoint(Copy(code,2,1));
        i3 := strtoint(Copy(code,3,1));
        i4 := strtoint(Copy(code,4,1));
        i5 := strtoint(Copy(code,5,1));
        i6 := strtoint(Copy(code,6,1));
        i7 := strtoint(Copy(code,7,1));
        i8 := strtoint(Copy(code,8,1));
        i9 := strtoint(Copy(code,9,1));
        i10 := strtoint(Copy(code,10,1));
        i11 := strtoint(Copy(code,11,1));
        i12 := strtoint(Copy(code,12,1));

        ia := i2+i4+i6+i8+i10+i12;
        ia := ia * 3 ;
        ib := i1+i3+i5+i7+i9+i11;
        ic := ia + ib;

        ic := 10 - (ic mod 10);
        if ic = 10 then ic := 0;

        result := code+inttostr(ic);
     end
     else if (Length(code) = 7) then begin
          i7 := strtoint(Copy(code,1,1));
          i6 := strtoint(Copy(code,2,1));
          i5 := strtoint(Copy(code,3,1));
          i4 := strtoint(Copy(code,4,1));
          i3 := strtoint(Copy(code,5,1));
          i2 := strtoint(Copy(code,6,1));
          i1 := strtoint(Copy(code,7,1));

          ia := i1+i3+i5+i7;
          ia := ia * 3 ;
          ib := i2+i4+i6;
          ic := ia + ib;

          ic := 10 - (ic mod 10);
          if ic = 10 then ic := 0;

          result := code+inttostr(ic);
     end;
end;