+ Auf Thema antworten
Zeige Ergebnis 1 bis 1 von 1

Thema: ByRef/ByVal - alles klar ?

  1. #1

    ByRef/ByVal - alles klar ?

    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!

    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
    Gruß
    cmdr
    Geändert von cmdr (22.01.2008 um 22:01 / @917 Uhr)

+ Auf Thema antworten

Ähnliche Themen

  1. Abfrage Von Checkboxen über abfragen
    By artecnet in forum VBA
    Replies: 0
    Letzter Beitrag: 26.01.2006, 15:09 / @631
  2. Array abfrage
    By Hans1 in forum VBS
    Replies: 1
    Letzter Beitrag: 12.12.2005, 19:18 / @804
  3. sql Abfrage mit vbs
    By DaAndi in forum VBS
    Replies: 5
    Letzter Beitrag: 02.12.2005, 16:39 / @693
  4. Replies: 3
    Letzter Beitrag: 18.11.2005, 10:42 / @445
  5. Replies: 1
    Letzter Beitrag: 16.01.2005, 13:16 / @553

Forumregeln

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.