Tänkte ta och be om hjälp med en kodsnutt jag skulle behöva ha översatt till Delphi.
Har lyckats hitta kodsnutten i JavaScript, (den kollar ifall en IBAN-kod är korrekt). Dock har jag ingen aning om hur det skulle se ut i Delphi.
//Eks. på kald: checkIBAN('fld1','IBAN','DA')
//Validerer om det indtastede er et korrekt IBAN nr.
function checkIBAN(f, feltnavn, sprog){
var korrekt=true;
var felt = eval("self.document._Contacts."+f+".value");
var resultat="";
var conversion = new Array('A','10','B','11','C','12','D','13','E','14','F','15','G','16','H','17','I','18','J','19','K','20','L','21','M','22','N','23','O','24','P','25','Q','26','R','27','S','28','T','29','U','30','V','31','W','32','X','33','Y','34','Z','35');
//mellemrum m.m. fjernes
var kunBogstavTal = "";
for (var i=0;i<felt.length;i++) {
tmp = felt.charAt(i);
if(tmp!=" " && tmp!="-" && tmp!=".") kunBogstavTal += tmp;
}
//Er nummeret korrekt længde ifølge standard i landet?
if(kunBogstavTal.substring(0,2).toUpperCase()=="DK"){if(kunBogstavTal.length!=18) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="FR"){if(kunBogstavTal.length!=27) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="BE"){if(kunBogstavTal.length!=16) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="FI"){if(kunBogstavTal.length!=18) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="GR"){if(kunBogstavTal.length!=27) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="NL"){if(kunBogstavTal.length!=18) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="IE"){if(kunBogstavTal.length!=22) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="IT"){if(kunBogstavTal.length!=27) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="LI"){if(kunBogstavTal.length!=21) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="LU"){if(kunBogstavTal.length!=20) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="NO"){if(kunBogstavTal.length!=15) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="PT"){if(kunBogstavTal.length!=25) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="CH"){if(kunBogstavTal.length!=21) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="ES"){if(kunBogstavTal.length!=24) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="SE"){if(kunBogstavTal.length!=24) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="DE"){if(kunBogstavTal.length!=22) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="GB"){if(kunBogstavTal.length!=22) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="HU"){if(kunBogstavTal.length!=28) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="AT"){if(kunBogstavTal.length!=20) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="FO"){if(kunBogstavTal.length!=18) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="GL"){if(kunBogstavTal.length!=18) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="SK"){if(kunBogstavTal.length!=24) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="CY"){if(kunBogstavTal.length!=28) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="LV"){if(kunBogstavTal.length!=21) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="EE"){if(kunBogstavTal.length!=20) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="LT"){if(kunBogstavTal.length!=20) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="CZ"){if(kunBogstavTal.length!=24) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="SI"){if(kunBogstavTal.length!=19) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="TN"){if(kunBogstavTal.length!=24) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="RO"){if(kunBogstavTal.length!=24) {resultat=2;}}
else if(kunBogstavTal.substring(0,2).toUpperCase()=="MT"){if(kunBogstavTal.length!=31) {resultat=2;}}
if(resultat!=2) {
//de første 4 cifre lægges bagerst.
var cifreBagerst = kunBogstavTal.substring(4,kunBogstavTal.length)+kunBogstavTal.substring(0,4);
//Konverter bogstaver.
var konverterTilTal = "";
for (var i=0;i<cifreBagerst.length;i++) {
tmp = cifreBagerst.charAt(i).toUpperCase();
if(isNaN(tmp)) {
var tal = "";
for (var j=0;j<conversion.length;j++) {
if(conversion[j]==tmp) {tal=conversion[j+1]}
}
konverterTilTal+=tal;
}
else {konverterTilTal+=tmp}
}
//Udfør MOD på 9 karakterer af gangen.
var taeller = 0;
for (var i=0;i<konverterTilTal.length;i=i) {
i=i+taeller;
//Er sidste resultat 0 skal dette opfattes som "" i det videre forløb.
if(resultat==0) resultat="";
resString = resultat.toString();
taeller = 9 - resString.length;
tmp2 = resString+konverterTilTal.substring(i,i+taeller);
//Evt. 0'er forrest i det 9 cifrede tal skal fjernes.
var ikkeslut= true;
var taeller2=0;
for (var j=0;j<tmp2.length && ikkeslut;j++) {
if(tmp2.substring(j,j+1)=="0") {taeller2++;}
else {ikkeslut=false;}
}
//Det aktuelle antal 0'er fjernes.
if(taeller2>0) {tmp2 = tmp2.substring(taeller2,tmp2.length);}
tmp = parseInt(tmp2);
//Selve beregningen.
resultat= tmp%97;
if(i+taeller>konverterTilTal.length) i=i+100;
}
//afslutning af if(resultat!=2) helt i toppen.
}
if(resultat==1) alert(eval("IBAN OK"));
else alert(eval("IBAN EJ KORREKT"));
}
Som sagt. Skulle vara ytterst tacksam infall någon har lust att hjälpa.
tack
Andreas