Omschrijving
Deze functie controleert een bankrekeningnummer met behulp van de zogenaamde 11-proef. De oorspronkelijke code is te vinden op deze link, maar wegens een ernstig gebrek aan overzicht en een overschot aan variabelen en code die niet nodig is compleet herschreven.
Voorbeeld
Code:
// 52.88.33.211 is een foutief banknummer, alles opgeteld blijft er 3
// over als je door 11 deelt...
if not ElfProef('52.88.33.211') then
ShowMessage('Dit bankrekeningnummer is incorrect!');
Code
Code:
function ElfProef(const Banknummer: String): Boolean;
var
sFiltered: String;
iCount: Integer;
iChar: Integer;
iValue: Integer;
begin
Result := False;
// Controleer minimum lengte
if Length(Banknummer) >= 9 then begin
// Filter alle niet-getallen
SetLength(sFiltered, Length(Banknummer));
iCount := 0;
for iChar := 1 to Length(Banknummer) do
if Banknummer[iChar] in ['0'..'9'] then begin
Inc(iCount);
sFiltered[iCount] := Banknummer[iChar];
end;
SetLength(sFiltered, iCount);
// Controleer nieuwe lengte
if Length(sFiltered) = 9 then begin
iCount := 0;
// Tel alle getallen op
//
// Elfproef theorie:
// Getal1 * 9 + Getal2 * 8 + Getal3 * 7, enz. moet deelbaar
// zijn door 11...
for iChar := 1 to Length(sFiltered) do begin
iValue := Ord(sFiltered[iChar]) - Ord('0');
iCount := iCount + (iValue * (10 - iChar));
end;
// Elfproef
if (iCount mod 11) = 0 then
Result := True;
end;
end;
end;
Bookmarks