Eine Langzahlarithmetik benötigt man auch bei der Ermittlung der Prüfziffer einer IBAN (aus BLZ und Konto-Nummer) sowie bei der Prüfung der Gültigkeit einer IBAN.
Code:
Zur besseren Veranschaulichung das ganze zusammengefasst:
Bankleitzahl 70090100
Kontonummer 1234567890
BBAN 700901001234567890
alphanumerische Länderkennung DE
numerische Länderkennung 1314 (D = 13, E = 14)
numerische Länderkennung ergänzt um 00 131400
Prüfsumme 700901001234567890131400
Prüfsumme Modulo 97 90
Prüfziffer 08 (98 - 90, ergänzt um führende Null)
Länderkennung +Prüfziffer + BBAN = IBAN DE08700901001234567890
Die Prüfung der IBAN erfolgt, indem ihre ersten vier Stellen ans Ende
verschoben und die Buchstaben wieder durch 1314 ersetzt werden.
Die Zahl 700901001234567890131408 Modulo 97 muss 1 ergeben.
Dann ist die IBAN gültig, was auf dieses Beispiel zutrifft.
Wie will man mit "normalen" Delphi-Möglichkeiten prüfen, ob die 24-stellige Zahl Modulo 97 genau 1 ergibt ?
Ich habe das gelöst durch ein Nachbilden der schriftlichen Division, wie wir das früher in der Schule gelernt haben.