Kom ihåg mig?
Home Menu

Menu


Luhn-algoritmen i VB script?

Ämnesverktyg Visningsalternativ
Oläst 2009-12-27, 12:42 #1
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
Standard Luhn-algoritmen i VB script?

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!
Z@cke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-27, 12:50 #2
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
Testat denna? http://sv.wikipedia.org/wiki/Luhn-algoritmen#VBA
digiArt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-27, 13:03 #3
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
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... :-)
Z@cke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-27, 13:08 #4
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
PHP-kod:
function luhn (cc)
   
dim sumi

   sum 
0
   
for len (cc) - 1 to 1 step -2
      sum 
sum + array (0246813579) (cint (mid (cci1)))
   
next
   
for len (ccto 1 step -2
      sum 
sum cint (mid (cci1))
   
next
   luhn 
= (sum mod 10 0)
end function 
Saxat från http://ornery-geeks.org/text/code/validationcomparison/

Google är din vän
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-27, 14:20 #5
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
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...
Z@cke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-28, 19:55 #6
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
digiArt digiArt är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jan 2004
Inlägg: 1 429
Citat:
Ursprungligen postat av Z@cke Visa inlägg
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... :-)
Ähum, vad är skillnaden? Jag vet skillnaden på språken, men just i det där såg jag inget unikt för VBA, bör funka i VBScript.

Har du testkört?
digiArt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-28, 20:10 #7
Ara Ara är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Mar 2005
Inlägg: 1 956
Ara Ara är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Mar 2005
Inlägg: 1 956
Citat:
Ursprungligen postat av Z@cke Visa inlägg
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...
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.
Ara är inte uppkopplad   Svara med citatSvara med citat
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
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:03.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017