View Łukasz Herman's LinkedIn profileView my profile

statystyki www stat.pl

Blog > Komentarze do wpisu

VBS - funkcja Execute

Jakiś czas temu w pracy natknąłem się na dziwną przypadłość w VB Scriptcie. Tworząc procedury lub funkcje, w żaden sposób interpreter nas nie pilnuje czy nie zadeklarowaliśmy tej samej procedury dwa (lub więcej) razy. Pamięta ostatnio zadeklarowaną wersję i z niej możemy korzystać.

Chyba, że skorzystamy z funkcji Execute. Przydaje sięona, gdy chcemy korzystać z funkcji zawartych w zewnętrznych plikach (repozytorium procedur lub coś w tym stylu). Wtedy za każdym razem VB Script wykonuje ostatnio wykonaną funkcję zadeklarowaną przez Execute.

Dim X ' Declare X in global scope.
X = "Global" ' Assign global X a value.

Sub Proc1
Dim X ' Declare X in local scope.
X = "Local" ' Assign local X a value.
' The Execute statement here creates a
' procedure that, when invoked, prints X.
' It print the global X because Proc2
' inherits everything in global scope.
Execute "Sub Proc2: WScript.Echo X: End Sub"
WScript.Echo Eval("X") ' Print local X.
Proc2 ' Invoke Proc2 in Proc1's scope.
End Sub

'Proc2 ' This line causes an error since
' Proc2 is unavailable outside Proc1.
Proc1 ' Invoke Proc1.
Execute "Sub Proc2: WScript.Echo X: End Sub"
Proc2 ' This invocation succeeds because Proc2
' is now available globally.

Warto sobie przeanalizować ten przykład (i trochę pomodyfikować).

piątek, 05 listopada 2010, hermanluk

Polecane wpisy

TrackBack
TrackBack w tym blogu jest moderowany. TrackBack URL do wpisu: