|
| |
Home Up
bank-giro rekening controlleer module
Weet iemand hier een bankrekeining - girorekening check module
Dit wil zeggen dat het bakrekening nummer op echtheid wordt gecontrolleert tijdens het invullen ervan.
alvast bedankt
--
Volgens mij heet dat de 11 proef of zoiets. Weet het algoritme niet, maar zoek eens op 11 proef.
Succes,
Benno
--
Hoi, hier is wat ik gebruik.
De functie "bank_nr_ok" doet wat jij vraagt.
De functie "numerical_string" geeft het banknummer terug zonder speciale tekens erin (bv "-").
Succes.
-------------------
unit bank_nr;
interface
function bank_nr_ok(s: shortstring):boolean;
function numerical_string(s:shortstring):shortstring;
implementation
uses strings, sysutils;
function numerical_string(s:shortstring): shortstring;
var i,l : byte;
begin
s := trim(s);
l := length(s);
for i := l downto 1 do begin
if (s[i] < '0') or (s[i] > '9') then delete(s,i,1);
end;
numerical_string := s;
end;
function bank_nr_ok(s:shortstring):boolean;
var s1,s2 : string[15];
getal : real;
check : byte;
error : integer;
begin
s := numerical_string(s);
if (length(s) <> 12) then begin
bank_nr_ok := false;
exit;
end;
s1 := leftstring(s,length(s)-2) + '.0';
s2 := rightstring(s,2);
val(s1,getal,error);
if (error <> 0) then begin
bank_nr_ok := false;
exit;
end;
val(s2,check,error);
if (error <> 0) then begin
bank_nr_ok := false;
exit;
end;
if (check = 0) then check := 97
else if (check = 97) then check := 0;
if ((getal - ((int(getal / 97)) * 97)) = check)
then bank_nr_ok := true
else bank_nr_ok := false;
end;
end.
--
Beste Anoniempje,
Ik weet in welk land je woont maar in nederland zijn alle bank nummers maar 9 cijfers dus jou functie zal in nederland altijd false teruggeven.
vanwege dit vergelijk
if (length(s) <> 12) then
begin
bank_nr_ok := False;
exit;
end;
Roelof
--
Het heet inderdaad de elf proef
het concept is als volgt je hebt 9 cijfers
getal 1 * 1
Getal 2 * 2
enz
het totaal van al deze optellingen moet deelbaarzijn door 11
onderstaande code bevat een volledige elf proef
function CheckBankNummer(Banknummer : String):Boolean;
var
BankNr,
Reknummer,
msg,
RekNr : String;
Idx,
Dummy,
Temp : Integer;
begin
try
if Length(BANKNUMMER) >= 9 then
begin
BankNr:=BankNummer;
//Alleen getallen uitfilteren
Reknr:='';
For Idx:=1 to length(bankNr) do
begin
if (bankNr[idx] in [#48..#57]) then
Reknr:=Reknr+bankNr[idx];
end;
// elf proef
Reknummer := '';
Dummy:=0;
For Idx:=1 to length(Reknr) do
begin
if (Reknr[idx] in [#48..#57]) then
Reknummer:=Reknummer+Reknr[idx];
end;
if (Reknummer <> '') and (Length(Reknummer)=9) then
begin
Temp:=9;
for Idx:=1 to 9 do
begin
Dummy:=Dummy+(Strtoint(Reknummer[Idx])*Temp);
Dec(Temp);
end;
if (Dummy Mod 11) = 0 then
else
begin
Msg := 'Dit is geen geldig banknummer het voldoet niet aan de elfproef.';
abort;
end;
end
else
begin
msg := 'Dit is geen geldig banknummer het aantal cijfers is ongelijk aan 9.';
abort;
end;
end
else
begin
msg := 'Dit is geen geldig banknummer het aantal cijfers is ongelijk aan 9.';
abort;
end;
Result := True;
except
Result := False;
Application.MessageBox(Pchar(msg),'Ongeldig banknummer', MB_OK);
end;
end;
|