função pega na internet, mas testei e funciona.
function ValidaEAN( CodigoBarras:string ): Boolean;
var numero, soma2:string;
digito:byte;
soma,s,i,calculo:integer;
begin
result:= false;
numero := CodigoBarras;
while (length(numero) < 13) do
begin
numero:= '0'+numero;
end;
digito:= StrToInt(copy(numero,length(numero),1));
delete(numero,length(numero),1);
if (numero<>'000000000000') then
begin
s:=length(numero);
i:=0;
calculo := 3;
soma :=0;
repeat
soma:= soma + StrToInt(copy(numero,length(numero)-i,1))* calculo;
inc(i);
if calculo =3 then
calculo := 1
else
calculo := 3;
dec(s);
until s=0;
numero:=IntToStr(soma);
soma2:= copy(numero,length(numero),1);
if soma2 = '0'then
Result:= (digito=strtointdef(soma2,0))
else
result:= (digito=10-StrToInt(soma2));
end;
end;
Muito util...
ResponderExcluir