Visa ett inlägg
Oläst 2009-12-28, 20:29 #8
Z@ckes avatar
Z@cke Z@cke är inte uppkopplad
Nykomling
 
Reg.datum: May 2006
Inlägg: 32
Z@cke Z@cke är inte uppkopplad
Nykomling
Z@ckes avatar
 
Reg.datum: May 2006
Inlägg: 32
digiArt: Vill minnas att VBA främst avsett för programmering i Microsoft Word, Excel, Access etc, och skiljer sig något från VBS. De är inte fullt kompatibla. Koden som man hittar om man följer länken du tipsar om funkar tyvärr inte i VBS.

Ara: Det är en lösning på problemet om än lite omständig.
Jag tror emellertid att jag har byggt en fungerande funktion i VBS som returnerar rätt kontrollsiffra. Den går säkert att förfina men den funkar tills vidare:

Med risk för att bli utskrattad: :-)

<%
Function getLuhn(talfoljd)

a = len(talfoljd) ' kolla längden på talföljden

FOR b = a TO 1 step -1 ' stega från slutet och framåt...

c = mid(talfoljd, b, 1) ' ta fram siffran vi skall behandla i talföljden...

IF b = a THEN t=2' om vi är i slutet av talföljden... sätt vikt till 2

IF t=2 THEN ' om vikt är 2...
d=c*t ' multiplicera med vikt (2) och...
t=1 ' sätt vikt till 1
ELSE ' om vikt är annat än 2 (=1)...
d=c*t ' multiplicera med vikt (1) och...
t=2 ' sätt vikt till 2
END IF

IF d>9 THEN d = int(left(d,1)) + int(right(d,1)) ' Om produkten är större än 9, dela upp produkten och addera talen med varandra

e = e + d ' addera produkten till totalsumman

NEXT ' stega framåt i talföljden

IF e MOD 10 = 0 THEN ' om summan av produkterna är jämnt delbart med 10 är kontrollsiffran 0
h=0
ELSE ' annars, räkna ut kontrollsiffran
f = ((fix(e/10))+1)*10
h = f-e
END IF

getLuhn = h ' returnera kontrollsiffran

End Function
%>
Z@cke är inte uppkopplad   Svara med citatSvara med citat