Delphi Gebruikersgroep

 

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;