// 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;


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke