Thema: Delphi IBAN überprüfen

Einzelnen Beitrag anzeigen

ms61

Registriert seit: 19. Okt 2005
6 Beiträge
 
Delphi 3 Client/Server
 
#4

AW: IBAN überprüfen

  Alt 2. Mär 2012, 15:45
Hallo,
bin auf der Suche nach einer schnellen IBAN-Validierung (für Massenverarbeitung) auf diesen Thread gestoßen. Da die bisherige Lösung nicht auf Schnelligkeit getrimmt war, habe ich dann doch selbst etwas programmiert. Für alle, die es interessiert:

Code:
// Prüfung einer IBAN auf formale Korrektheit (ohne Prüfung der Gültigkeit des Länderkürzels)
// Autor: Dr. Michael Schramm, Bordesholm
function checkIban(const sIban: String): boolean;
var k,i,n,len: integer; c: char;
    buff: array[0..67] of char;
begin
  result:= false;
  n:= length(sIban);
  if (n < 5) or (n > 34) then exit;
  len:= 0; k:= 5;
  repeat // IBAN als Ziffernfolge in geänderter Reihenfolge in buff schreiben
    c:= sIban[k];
    if (c >= '0') and (c <= '9') then begin
      buff[len]:= c; inc(len)
    end
    else if (c >= 'A') and (c <= 'Z') then begin
      i:= ord(c)-55;
      buff[len]:= char(i div 10 + 48); inc(len);
      buff[len]:= char(i mod 10 + 48); inc(len)
    end
    else exit;
    inc(k);
    if k > n then k:= 1
  until k = 5;
  i:= 0; // aktueller Rest für Modulo-Berechnung
  for k:= 0 to len-1 do begin // modulo 97 berechnen
    i:= (i * 10 + ord(buff[k]) - 48) mod 97;
  end;
  result:= (i = 1)
end;
Die Funktion erwartet die IBAN in kurzer Form, so wie sie z. B. in SEPA-XML-Dateien auftritt. Falls die IBAN Leerzeichen enthält, müssen diese vor der Prüfung entfernt werden.

Grüße
Michael
Michael
  Mit Zitat antworten Zitat