timeout in vbscript-klasse
Matze
- html
Hallo,
ich steh gerade ein wenig auf dem Schlauch und hoffe mir kann jemand helfen.
Ich habe hier eine VBScript-HTA bei der ich einige Arbeitsabläufe in Klassen kapseln möchte.
Das funktioniert auch eigentlich recht gut, nur habe ich ein Problem mit "setTimeout".
Und das Problem sieht nachvollziehbar so aus:
<Stammdatei, die die Klasse lädt>
dim ecls
set ecls = new clstest
ecls.test()
sub test()
msgbox "Hier bin ich falsch"
end sub
<Klassendatei>
class clstest
sub test()
msgbox "Hier bin ich richtig"
setTimeout "test()",1000
end sub
end class
Eigentlich sollte alle Sekunde die sub "test" in der Klasse gestartet werden. Bei initialen Aufruf passiert das auch, aber beim 2. kommt die sub von oben. Es liegt also wohl am Scope - aber wie kann ich das ändern?
Vielen Dank
Matze
Hallo,
Ich habe hier eine VBScript-HTA bei der ich einige Arbeitsabläufe in Klassen kapseln möchte.
Das funktioniert auch eigentlich recht gut, nur habe ich ein Problem mit "setTimeout".
Nein, Du hast ein Problem damit, eine Funktions- bzw. Sub-Referenz in VBSCRIPT zu erzeugen. Dafür ist GetRef("subname") zuständig. Das funktioniert aber nicht mit Klassenmethoden. Also GetRef("me.subname") ist nicht vorgesehen.
class clstest
sub test()
msgbox "Hier bin ich richtig"
setTimeout "test()",1000
// hier würde in JavaScript stehen:
setTimeOut(this.test, 1000);
// in VBSCRIPT würde aber
setTimeOut me.test, 1000
// die Methode me.test aufrufen, statt eine Referenz zu erzeugen.
// Und GetRef("me.test") geht, wie gesagt, nicht.
end sub
end class
>
> Eigentlich sollte alle Sekunde die sub "test" in der Klasse gestartet werden. Bei initialen Aufruf passiert das auch, aber beim 2. kommt die sub von oben. Es liegt also wohl am Scope - aber wie kann ich das ändern?
Was gehen würde wäre:
~~~vbscript
class clstest
public default sub test
msgbox "Hier bin ich richtig"
if msgbox("Wiederholen?", 4) = 6 then
setTimeout me, 1000
end if
end sub
end class
sub s_onload
dim ecls
set ecls = new clstest
ecls.test
end sub
sub test
msgbox "Hier bin ich falsch"
end sub
window.onload = GetRef("s_onload")
viele Grüße
Axel