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.