Avatar billede themepark Nybegynder
30. oktober 2003 - 02:54 Der er 9 kommentarer og
1 løsning

Problemer med overførte variabler i funktioner

Når jeg overfører en variabel til en funktion og ændrer på den, hvordan får jeg så den nye værdi tilbage til den forrige variabel?

F.eks.

Dim V
V=3
Adder(V)
MsgBox V

Function Adder(Variabel)
  Variabel=Variabel+1
End Function

Det vil altså sige at V skal få værdien 4.
Avatar billede thesurfer Nybegynder
30. oktober 2003 - 03:24 #1
Det her er testet med IE 6 og virker:

<script type="text/vbscript">

Function Adder(Variabel)
  Variabel=Variabel+1
  Adder = Variabel
End Function

Dim V
V=3
msgbox "V = " & Adder(V)

</script>
Avatar billede themepark Nybegynder
30. oktober 2003 - 03:59 #2
Ja...men det tildeler ikke værdien til V...kun til Adder...skriver du som den næste linje msgbox V, får du igen 3.
Avatar billede adam_christensen Nybegynder
30. oktober 2003 - 09:55 #3
Function Adder(ByRef Variabel)
  Variabel=Variabel+1
End Function

Og kald funktionen uden parenteser: 'Adder V' (ikke 'Adder(V)')
Avatar billede thesurfer Nybegynder
30. oktober 2003 - 16:53 #4
"..tildeler ikke værdien til V..".. hvad mener du?

ved at bruge 'msgbox "V: " & V' efter 'msgbox... adder(v)' får jeg at vide at V er 4, som det skal være..
Avatar billede themepark Nybegynder
31. oktober 2003 - 02:25 #5
Hmmm...jeg mente det jeg skrev, fordi da jeg testede det, fik jeg 3 umiddelbart bagefter igen fra den næste linje...men nu virker det af en eller anden mystisk grund :/

Men kan man ikke gøre det uden at skulle tildele V til Adder? Altså sådan, at når der bliver lagt 1 til V, så bliver V1, V2 eller V3 også automatisk opdateret, da det er en af de 3 variabler, der er overført?

Det kan da lade sig gøre i nogle programmeringssprog, har jeg set...men hvad med VBScript?
Avatar billede tjp Mester
31. oktober 2003 - 02:53 #6
Hvorfor prøver du ikke adam christensens forslag?
Avatar billede themepark Nybegynder
31. oktober 2003 - 03:40 #7
Fordi jeg ikke regnede med at så lille en ændring kunne gøre den store forskel, men fair nok det er afprøvet nu.

Og jeg får intet tal, formentlig fordi man også i det tilfælde vel skal skrive Adder=Variabel
Avatar billede adam_christensen Nybegynder
31. oktober 2003 - 10:07 #8
storbytossen> Ehm... det er ofte de små ting der gør forskellen når man programmerer. Det jeg postede virker fint (med mindre jeg har misforstået hvad det er du vil opnå); her er hele koden:

Dim V
V=3
Adder V
MsgBox V

Function Adder(ByRef Variabel)
  Variabel=Variabel+1
End Function
Avatar billede tjp Mester
31. oktober 2003 - 11:02 #9
storbytossen >>
AC's virker også fint hos mig! *S*
Og det er vejen frem, hvis du vil ændre mere end én variabel i en funktion, her i lidt udvidet udgave:
Dim V
Dim X
Dim Y
V=3
X=3
Y=3
MsgBox V&", "&X&", "&Y
Adder V,X,Y
MsgBox V&", "&X&", "&Y
Adder V,X,Y
MsgBox V&", "&X&", "&Y

Function Adder(ByRef V1,ByRef V2,ByRef V3)
  V1=V1+1
  V2=V2+2
  V3=V3+3
End Function
Avatar billede themepark Nybegynder
06. november 2003 - 19:01 #10
Well, I'll be darned :) Problemet lagde blot i de 2 parenteser i Adder(V) :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester