segunda-feira, 31 de outubro de 2011

Função de Validação de Código de Barras - EAN

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;

sábado, 29 de outubro de 2011

Ativando o Delphi C++ Builder XE2

RAD in Action Series - FireMonkey: Cross-Platform Development by Marco ...



sexta-feira, 14 de outubro de 2011

Video - Desenvolvendo iOS usando FireMonkey: Trabalhando com GPS e Compass

Video - Como criar uma Aplicação iPhone usando o RadPHP XE2



segunda-feira, 3 de outubro de 2011

Validador de Código de Barras (EAN)


function IsEan(CodigoEan : String) : Boolean;
var
  CheckSum, DigitoOrig : String;
  i, Digito, Longitud  : Integer;
begin
  Longitud := Length(CodigoEan);
 
  // Comprobar que no hay menos o m&aacute;s caracteres de los permitidos (8 &oacute; 13)
  if not ((Longitud <> 8) and (Longitud <> 13)) then
  begin
    // Obtener el d&iacute;gito de control leido en un principio
    DigitoOrig := Copy(CodigoEan, Longitud, 1);
 
    // Quitar el d&iacute;gito de control que se ha obtenido en la lectura para procesar
    // el c&oacute;digo de barras y verificar su correcta lectura.
    CodigoEan := Copy(CodigoEan, 1, Longitud - 1);
 
    CheckSum := '131313131313';
 
    Digito := 0;
 
    for i := 1 to Longitud - 1 do
      Digito := Digito + (StrToInt(Copy(CodigoEan, i, 1)) * StrToInt(Copy(CheckSum, i, 1)));
 
    // Extraer el valor de la derecha.
    Digito := StrToInt(Copy(IntToStr(Digito), Length(IntToStr(Digito)),1));
 
    // Restarlo de 10 si es mayor o igual que 10.
    if Digito > 9 then
      Digito := 10 - Digito;
 
    // Comparar d&iacute;gito de control original con el obtenido y devolver un resultado.
    Result := (Digito = StrToInt(DigitoOrig));
  end
  else
    Result := False;
end;