Ik wilde het wiel opnieuw uitvinden door zelf een procedure te maken.
Dit had het moeten worden:
Code:
function IBANElfProef(const aIBAN : string) : boolean;
var RevIBAN : string;
ConvIBAN : string;
index : integer;
controlleNr : int64;
Karakter : char;
begin
//verplaats de eerste 4 karakters naar het einde
RevIBAN := uppercase(copy(aIBAN,5,length(aIBAN) - 4) + copy(aIBAN,1,4));
//vervang elke letter door 2 cijfers, waarbij A = 10, B = 11, ..., Z = 35
ConvIBAN := '';
for index := 1 to length(RevIBAN) do
begin
Karakter := RevIBAN[index];
if Karakter in ['A'..'Z'] then
ConvIBAN := ConvIBAN + IntToStr(ord(Karakter) - 55)
else
ConvIBAN := ConvIBAN + IntToStr(ord(Karakter) - ord('0'));
end;
//bereken dan het getal modulo 97
controllenr := StrToInt64(ConvIBAN);
result := (controllenr mod 97) = 1;
end;
maar het getal is groter dan een int64 en hangt daarop. Nog even gekeken naar een bigint library, maar wilde niet werken met FPC.
blijkt dat op deze code kant en klaar staat.
Het controleert het echte IBAN-nummer (inclusief de oude postbanknummers)
Bookmarks