Wer mit dem C++Builder eine IBAN prüfen und erzeugen möchte, kann diese Routinen nutzen.
Die Routine PruefeIBAN erwartet als Übergabeparameter eine IBAN und gibt true oder false zurück, wennn diese stimmt
Die Routine MakeIBAN erzeugt eine IBAN. Dabei wird der korrekte Ländercode, die Bankleitzahl und eine auf 10-Stellen erweiterte Kontonummer vorausgesetzt (Übergabeparameter).
Die Rountinen ModuloBerechnen und ChangeBuchstaben sind "interne" Funktionen
Die Routinen basieren auf Informationen aus dem Internet (Bundesbank). Es wird ausdrücklich darauf hingewiesen, dass nur das kontoführende Geldinstitut eine IBAN berechnet und ich aus diesem Grunde keine Gewähr für die korrekte Funktion übernehmen kann.
bool PruefeIBAN(String iban)
{
iban=iban.UpperCase();
iban=AnsiRightStr(iban,iban.Length()-4)+AnsiLeftStr(iban,4);
iban=ChangeBuchstaben(iban);
return ModuloBerechnen(iban)==1?true:false;
}
//---------------------------------------------------------------------------
int ModuloBerechnen(String iban)
{
String htext="";
int i=1,z;
while (i=<iban.Length())
{
do
{
htext+=iban[i++];
z=StrToInt(htext)%97;
}
while(z==StrToInt(htext)&&i<ban.Length());
htext=IntToStr(z);
}
return StrToInt(htext);
}
//---------------------------------------------------------------------------
String ChangeBuchstaben(String value)
{
int x,z;
for(x=1;x=<value.Length();x++)
{
z=StrToIntDef(value[x],-1);
if(z==-1)
{
z=(char)value[x]-55;
value.Delete(x,1);
value.Insert(IntToStr(z),x);
x++;
}
}
return value;
}
//---------------------------------------------------------------------------
String MakeIBAN(String land, String blz, String kto)
{
String rt,iban=land+"00"+blz+kto;
iban.UpperCase();
iban=AnsiRightStr(iban,iban.Length()-4)+AnsiLeftStr(iban,4);
iban=ChangeBuchstaben(iban);
rt=IntToStr(98-ModuloBerechnen(iban));
if(rt.Length()2<)
rt="0"+rt;
return land+rt+blz+kto;
}
//---------------------------------------------------------------------------