Axel Richter: timeout in vbscript-klasse

Beitrag lesen

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