Vsebina
Kazalo 🔎︎

# Storitev ScriptForge.Timer

Storitev Timer meri pretečeni čas ob izvajanju uporabniških skriptov.

Timer meri trajanje. Lahko je:

- zagnan, kar nakazuje, da meri čas delovanja;

- začasno zaustavljen, t.j. začasno ne meri časa delovanja;

- v nadaljevanju, da nadaljuje z merjenjem časa delovanja, potem ko je bil začasno zaustavljen;

- ponovno zagnan, kar prekliče prejšnje meritve in zažene časovnik Timer z ničelno vrednostjo.

Trajanja so izražena v sekundah z natančnostjo 3 decimalk (t.j. milisekunde). Vrednost trajanja 12,345 pomeni 12 sekund in 345 milisekund

## Priklic storitve

Pred uporabo storitve Timer je potrebno naložiti ali uvoziti knjižnico ScriptForge:

• Za makre Basic mora biti naložena knjižnica ScriptForge z naslednjim ukazom:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Za skripte Python mora biti opravljen uvoz iz modula scriptforge:
from scriptforge import CreateScriptService

##### V Basicu

Spodnji primer ustvari predmet Timer z imenom myTimer in ga nemudoma sproži.

        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        Dim myTimer As Variant
        myTimer = CreateScriptService("Timer", True)
        'Časovnik (Timer) se zažene takoj, ko je drugi argument = True, privzeto = False

Priporočamo, da po uporabi sprostite vire:

        Set myTimer = myTimer.Dispose()

##### V Pythonu

        from scriptforge import CreateScriptService
        myTimer = CreateScriptService("Timer", start = True)
        # ...
        myTimer = myTimer.Dispose()

## Lastnosti

Ime | Samo za branje | Vrsta | Opis
--- | --- | --- | ---
Duration | Da | Double | Dejansko pretečeni čas izvajanja od začetka oz. med začetkom in koncem (ne vključuje trajanja morebitnih vmesnih zaustavitev).
IsStarted | Da | Boolean | True, če je merilnik časa zagnan ali začasno ustavljen.
IsSuspended | Da | Boolean | True, če je merilnik časa zagnan in začasno ustavljen.
SuspendDuration | Da | Double | Dejansko pretečeni čas med začasno ustavitvijo ali od začetka do konca.
TotalDuration | Da | Double | Dejansko pretečeni čas od začetka ali od začetka in konca (vključno začasne zaustavitve in pretekli čas)

Upoštevajte, da je lastnost TotalDuration ekvivalentna vsoti lastnosti Duration in SuspendDuration.

## Metode

Vse metode ne zahtevajo argumentov in vrnejo (logično) vrednost Boolean.

Če je vrnjena vrednost False, se ni zgodilo nič.

Ime | Opis | Vrnjena vrednost
--- | --- | ---
Continue | Vključi časomer Timer, če je zaustavljen. | False, če časomer ni zaustavljen.
Restart | Ustavi časomer Timer, opusti trenutne vrednosti lastnosti in ponovno zažene kot novi časomer Timer. | False, če je časomer nedejaven.
Start | Zažene nov časomer. | False, če je časomer že zagnan.
Suspend | Začasno zaustavi tekoči časomer. | False, če časomer ni zagnan ali je že zaustavljen.
Terminate | Ustavi tekoči časomer. | False, če časomer sploh ni zagnan niti ni začasno zaustavljen.

### Primer:

Spodnji primeri v Basicu in Pythonu ilustrirajo rabo metod in lastnosti iz storitve Timer.

##### V Basicu

        myTimer.Start()
        Wait 500
        myTimer.Suspend()
        'Pretečeni čas, odkar je pogovorno okno odprto, bo šteto kot čas prekinitve
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Continue()
        Wait 500
        'Pretečeni čas, odkar je pogovorno okno odprto, bo šteto kot čas delovanja
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration
        myTimer.Terminate()
        'Pokaže končne meritve časa
        MsgBox myTimer.Duration & " " & myTimer.SuspendDuration & " " & myTimer.TotalDuration

Če kličete metodo Terminate, nadaljnji klici metode Continue ne bodo nadaljevali z merjenjem časa. Podobno po ustavitvi časomera Timer ga klic metode Start ponovno zažene, kot da gre za nov časomer Timer.

##### V Pythonu

        from time import sleep
        bas = CreateScriptService("Basic")
        myTimer.Start()
        sleep(0.5)
        myTimer.Suspend()
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
        myTimer.Continue()
        sleep(0.5)
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))
        myTimer.Terminate()
        bas.MsgBox("{} {} {}".format(myTimer.Duration, myTimer.SuspendDuration, myTimer.TotalDuration))

Bodite pozorni, saj funkcija Wait v jeziku BASIC za trajanje sprejme argument v milisekundah, medtem ko funkcija sleep v Pythonu za svoje argumente uporablja sekunde.

## Delo z več časomeri

Možno je zagnati več vzporednih časomernih storitev Timer, kar omogoča zelo prilagodljivo merjenje časa v različnih delih kode.

Naslednji primer ilustrira izdelavo dveh časomernih predmetov Timer in njun ločen zagon.

##### V Basicu

        Dim myTimerA as Variant, myTimerB as Variant
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        'Zažene časomer myTimerA
        myTimerA.Start()
        Wait 1000 'Wait 1 second (1,000 milliseconds)
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Zažene časomer myTimerB
        myTimerB.Start()
        Wait 1000
        MsgBox myTimerA.Duration & " " & myTimerB.Duration
        'Ukine oba časomera
        myTimerA.Terminate()
        myTimerB.Terminate()

##### V Pythonu

        from time import sleep
        myTimerA = CreateScriptService("Timer")
        myTimerB = CreateScriptService("Timer")
        myTimerA.Start()
        sleep(1)
        bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
        myTimerB.Start()
        sleep(1)
        bas.MsgBox("{} {}".format(myTimerA.Duration, myTimerB.Duration))
        myTimerA.Terminate()
        myTimerB.Terminate()

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic ali skriptih Python niso namenjeni.

Podobne teme

Funkcija Now

Funkcija Timer