Dieses "csmax" kann man sich schenken.
Bei der Modulo-Arithmetik rechnet man einfach nach jeder Operation mit
mod 97
:
Delphi-Quellcode:
FUNCTION CreateGermanIBAN(
Const BankCode,Account:
String):
String;
var cs, i,
cc:integer; s:
string;
begin
if (Length(BankCode)<>8)
or (Length(Account)<>10)
then Exit('
');
s:=BankCode+Account+'
131400';
// 131400 = 'DE00'
cs:=0;
for i:=1
to Length(s)
do begin
cs:=(cs*10+Ord(s[i])-Ord('
0'))
mod 97;
end;
cc:=98-cs;
if cc<2
then inc(
cc,97);
// 00-->97, 01--> 98
result:='
DE00';
result[3]:=Chr(
cc div 10+Ord('
0'));
result[4]:=Chr(
cc mod 10+Ord('
0'));
result:=result+BankCode+Account;
end;