![]() |
![]() ![]() ![]() ![]() |
|
Как проверить правильность номера средитной карточкиDelphi , Синтаксис , ПаролиАвтор: http://www.swissdelphicenter.ch
{-------------------------------------------------
Returns:
0 : Card is invalid or unknown
1 : Card is a valid AmEx
2 : Card is a valid Visa
3 : Card is a valid MasterCard
Ergebnis:
0 : Unbekannte Karte
1 : AmEx Karte
2 : Visa Karte
3 : MasterCard Karte
-------------------------------------------------}
function CheckCC(c: string): Integer;
var
card: string[21];
Vcard: array[0..21] of Byte absolute card;
Xcard: Integer;
Cstr: string[21];
y, x: Integer;
begin
Cstr := '';
FillChar(Vcard, 22, #0);
card := c;
for x := 1 to 20 do
if (Vcard[x] in [48..57]) then
Cstr := Cstr + chr(Vcard[x]);
card := '';
card := Cstr;
Xcard := 0;
if not odd(Length(card)) then
for x := (Length(card) - 1) downto 1 do
begin
if odd(x) then
y := ((Vcard[x] - 48) * 2)
else
y := (Vcard[x] - 48);
if (y >= 10) then
y := ((y - 10) + 1);
Xcard := (Xcard + y)
end
else
for x := (Length(card) - 1) downto 1 do
begin
if odd(x) then
y := (Vcard[x] - 48)
else
y := ((Vcard[x] - 48) * 2);
if (y >= 10) then
y := ((y - 10) + 1);
Xcard := (Xcard + y)
end;
x := (10 - (Xcard mod 10));
if (x = 10) then
x := 0;
if (x = (Vcard[Length(card)] - 48)) then
Result := Ord(Cstr[1]) - Ord('2')
else
Result := 0
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case CheckCC(Edit1.Text) of
0: Label1.Caption := 'Card is invalid or unknown';
1: Label1.Caption := 'Card is a valid AmEx';
2: Label1.Caption := 'Card is a valid Visa';
3: Label1.Caption := 'Card is a valid MasterCard';
end;
end;
Программа на Delphi для проверки корректности номера кредитной карты с использованием алгоритма Луна. Функция Процедура Схема работы кода следующая:
Некоторые предложения по улучшению кода:
В целом, это хорошая начальная работа, но она может нуждаться в некоторых оптимизациях и дополнительной проверке. Статья описывает алгоритм проверки правильности номера средитной карточки, позволяющий определить тип карты (AmEx, Visa, MasterCard) или объявить ее недопустимой. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||