Hallo,
aus einem anderen Forum (grrr!) habe ich eine Anregung zu einem "edukativen" Skript bekommen, das auf Beispielen aus einer mir nicht bekannten M$-Quelle beruht - also 80% geklaut, der Rest gebastelt. Es beschäftigt sich mit dem korrekten Einsatz von "ByRef" und "ByVal" bei der Übergabe von Parametern an Funktionen und Unterprogramme sowie deren syntaktisch zulässigem Aufruf. Hätten Sie alles gewußt ???? - Ich nicht!
GrußCode:'*********** ByRefByVal.vbs ********** Dim a,b,c,d,e,n,w,x,y,z Dim fu,ausgabe Sub DoOneParm( x ) x=x+9 End Sub Sub DoTwoParms( a, b ) a = a + b End Sub Sub DoByRef(ByRef d) d=d + 189 End Sub Sub DoByVal(ByVal e) e = e + 108 End Sub Function Funky( y ) y = y + 198 Funky = y End Function z = 123 Teste( "n = Funky(z)" ) ' legal, übergibt z als Referenz Teste( "n = Funky((z))" ) ' legal, übergibt z als Wert 'n = Funky z ' illegal, Klammern erforderlich Teste( "Funky z" ) ' legal, übergibt z als Referenz Teste( "Funky(z)" ) ' legal, übergibt z als Wert 'Call Funky z ' illegal, Klammern erforderlich Teste( "Call Funky(z)" ) ' legal, übergibt z als Referenz Teste( "Call Funky((z))" ) ' legal, übergibt z als Wert 'n = DoOneParm(z) ' illegal, geht nur mit Funktionen Teste( "DoOneParm z" ) ' legal, übergibt z als Referenz Teste( "DoOneParm(z)" ) ' legal, übergibt z als Wert Teste( "Call DoOneParm(z)" ) ' legal, übergibt z als Referenz Teste( "Call DoOneParm((z))" ) ' legal, übergibt z als Wert Teste( "DoTwoParms z, z" ) ' legal, übergibt z als Referenz Teste( "DoTwoParms (z), (z)" ) ' legal, übergibt z als Wert 'DoTwoParms(z,z) ' illegal, Klammern nicht erlaubt Teste( "Call DoTwoParms(z, z)" ) ' legal, übergibt z als Referenz Teste( "Call DoTwoParms((z), (z))" ) ' legal, übergibt z als Wert 'Call DoTwoParms z, z ' illegal, Klammern erforderlich Teste( "DoByRef(z)" ) ' legal, übergibt Wert an Referenz Teste( "DoByVal z" ) ' legal, übergibt Referenz an Wert Sub Teste(fu) w=z Execute fu ausgabe="z=" & w & vbLf & fu & vbLf & vbLf & "Ergebnis :" & vbLf & "z="& z If (w<>z) then ausgabe = ausgabe & " (Ref.)" else ausgabe = ausgabe & " (Wert)" end if WScript.Echo ausgabe z=w End Sub
cmdr



Mit Zitat antworten
Lesezeichen