//
Hiermit können 16-stellige Kreditkartennummern
auf
// Gültigkeit überprüft werden.
// Getestet mit RS 10.4 unter Win11
function Verify(Number: String): Boolean;
var
I, S, L, C: Integer;
begin
Result := False;
Number := StringReplace(Number, #32, '', [rfReplaceAll]);
L := Length(Number);
if L <> 16 then
exit;
S := 0;
for I := 1 to L do
begin
C := StrToIntDef(Number[I], 10);
if C > 9 then
exit;
if odd(I) then
begin
C := C * 2;
C := C div 10 + C mod 10;
end;
inc(S, C);
end;
Result := Frac(S / 10) = 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
M: String;
begin
if not Verify('1234 0005 3728 7601') then
M := 'Ungültige Kartennnummer'
else
M := 'OK';
ShowMessage(M);
end;
|