webForumDet fria alternativet

Modulus, och översättning

0 svar · 263 visningar · startad av AG

AGMedlem sedan mars 20001 266 inlägg
#1

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

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)