Verificar Cartão de Credito: Function - Delphi
Veja nesta Quick, como podemos validar Cartão de Crédito em Delphi
Olá galera, nesta Quick Tips, irei mostra como podemos validar os dígitos de um cartão de crédito, assim como é feito para validação de CNPJ e CPF, uma rotina pronta para uso, vamos à construção da mesma.
Criamos uma função chamada ValidarCartaCredito, com os parâmetro pCartao: String, retornando uma valor Integer. Veremos agora a implementação desta função.
function TFrmPrincipal.ValidarCartaoCredito(pCartao: string): Integer;
var
xCartao: string[21];
VetCartao: array[0..21] of Byte absolute xCartao;
kCartao: Integer;
Cstr: string[21];
y, x: Integer;
begin
Cstr := '';
FillChar(VetCartao, 22, #0);
xCartao := pCartao;
for x := 1 to 20 do
if (VetCartao[x] in [48..57]) then
Cstr := Cstr + chr(VetCartao[x]);
xCartao := '';
xCartao := Cstr;
kCartao := 0;
if not odd(Length(xCartao)) then
for x := (Length(xCartao) - 1) downto 1 do
begin
if odd(x) then
y := ((VetCartao[x] - 48) * 2)
else
y := (VetCartao[x] - 48);
if (y >= 10) then
y := ((y - 10) + 1);
kCartao := (kCartao + y)
end
else
for x := (Length(xCartao) - 1) downto 1 do
begin
if odd(x) then
y := (VetCartao[x] - 48)
else
y := ((VetCartao[x] - 48) * 2);
if (y >= 10) then
y := ((y - 10) + 1);
kCartao := (kCartao + y)
end;
x := (10 - (kCartao mod 10));
if (x = 10) then
x := 0;
if (x = (VetCartao[Length(xCartao)] - 48)) then
Result := Ord(Cstr[1]) - Ord('2')
else
Result := 0
end;
Usando a função.
Vamos adicionar 1 Edit(EdtCartaoCredito), 1 Label(LblResultado), e 1 BitBtn(BtnTestarCartao), e no clique do botão vamos implementar o seguinte :
procedure TFrmPrincipal. BtnTestarCartao Click(Sender: TObject);
begin
case ValidarCartaoCredito(EdtCartaoCredito.Text) of
0: LblResultado.Caption := 'Este Cartão é invalido ou desconhecido';
1: LblResultado.Caption := 'Este Cartão é um AmEx';
2: LblResultado.Caption := 'Este Cartão é um Visa';
3: LblResultado.Caption := 'Este Cartão é um MasterCard;
end;
end;
Quando incluir o número do seu cartão, caso ele seja AmEx, Visa ou MasterCard, você poderá ver que uma mensagem será passada para o Caption do LblResultado, caso o valor seja inválido também será trato este tipo de erro. Como podemos notar, existe um Calculo assim como é feito no CPF e no CNPJ.
Podemos criar uma unit, separada e implementar a mesma para reaproveitarmos esta função.
Fico por aqui ate à próxima Quick Tips.
Um abraço
Wesley Y
wyamazack@rwsolution.com.br
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo