FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Nykomling
|
Hej,
Är det någon som har en Luhn-algoritmfunktion liggandes? Jag behöver en funktion som räknar ut sista kontrollsiffran i en talföljd (godtyckligt antal siffror) med VB script. Jag hittar gott om verifierings-skript på nätet, men inget som plockar fram själva siffran. Tack på förhand! |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Har WN som tidsfördriv
|
Testat denna? http://sv.wikipedia.org/wiki/Luhn-algoritmen#VBA
|
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Nykomling
|
Tack,
Den var i VBA, inte VB Script. Hade hoppats på att själv inte behöva böka med konvertering utan en färdig lösning... :-) |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
PHP-kod:
Google är din vän ![]() |
||
![]() |
![]() |
![]() |
#5 | |||
|
||||
Nykomling
|
Tack igen,
Jag kanske var otydlig :-), men jag letade efter kod som tar fram kontrollsiffran, inte kontrollerade om den stämde. Hur som helst så byggde jag en egen, ska testa lite först och se om det blev rätt innan jag vågar publicera koden här... |
|||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Har du testkört? |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Bara ett inlägg till!
|
annars kan du vara lat och bara lägga in koden i en loop som loopar igenom (0-9) tills du får "träff" och vips så får du ut "rätt" siffra.
|
||
![]() |
![]() |
![]() |
#8 | |||
|
||||
Nykomling
|
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 %> |
|||
![]() |
![]() |
Svara |
|
|