Einzelnen Beitrag anzeigen

Willie1

Registriert seit: 28. Mai 2008
667 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

IBAN Prüfsumme

  Alt 30. Nov 2013, 19:24
Hallo Leute,
ich will die 2-stellige Prüfzahl für das neue SEPA-Überweisungssystem in der der IBAN ermitteln.
Das sieht so aus:
DEppbbbbbbbbkkkkkkkkkk

DE = Deutschland
pp = zu ermittelnde Prüfzahl
b... = 8-stellige (alte) Bankleitzahl
k... = 10-stellige Kontonummer evt. von links mit 0 auffüllen.

Hie Methode findet ihr hier: http://www.pruefziffernberechnung.de/I/IBAN.shtml

Hier ist mein Quelltext:
Delphi-Quellcode:
procedure TForm1.btmBerechneClick(Sender: TObject);
var
  IBAN, Ps: string;
  IBANint64: int64;
  Rest: Integer;

  function LCinZahl(LC: string): string;
  var
    i: Integer;
  begin
    Result:='';
    for i:=1 to 2 do Result:=Result + IntToStr(Ord(LC[i])-55);
  end;

begin
  if (Length(ledLC.Text) < 2) or (Length(ledBLZ.Text) < 8) or (Length(ledKTN.Text) < 10) then
  begin
    beep;
    ledLC.SetFocus;
  end;
  Ps:=LCinZahl(ledLC.Text);
  IBAN:=ledBLZ.Text + ledKTN.Text + Ps + '00';
  IBANint64:=StrToInt64(IBAN);
  Rest:=IBANint64 mod 97;
  Rest:=98 - 10;
  Ps:=IntToStr(Rest); if Rest < 10 then Ps:='0'+Ps;
  IBAN:=ledLC.Text + Ps + ledBLZ.Text + ledKTN.Text;
  ledIBAN.Text:=IBAN;
end;
Das Ganze scheitert an der viel zu großen Zahl IBANint64, die selbst für 64-Bit zu groß ist!
Wie komme ich witer, wie errechnen die Banken die Prüfzahl?

Gruß Willie.
  Mit Zitat antworten Zitat