Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Pilailuohjelman Wait-komento lyhyemmin

Sivun loppuun

moptim [22.07.2006 14:40:46]

#

Tässä on toteutettu Pilailuohjelman Wait-komento yksinkertaisemmin. Tämä ei ole tarkka sekunti, mutta se säästää 20 riviä. Ei tarvitse myöskään mitään alkumäärittelyjä tai muita muuttujia kuin sen sisältämät.

Moduuli:

Sub Main()
  Wait 5
End Sub

Aliohjelma:

Private Sub Wait(Sekunnit As Long)
  Dim iRet As String
  iRet = Str(Sekunnit * 333333)
  For i = 0 To Val(iRet)
    DoEvents
  Next i
End Sub

Metabolix [22.07.2006 16:45:25]

#

... Tai sitten voi säästää tuosta vielä nuo kymmenen riviä ja määritellä Windowsin Sleep-funktion, joka on taatusti paljon tarkempi kuin tuo, tai edes käyttää GetTickCountia. Sitä paitsi tuo ei todellakaan toimi täsmällisesti edes omalla koneellasi, eikä taatusti toimi toisella koneella samassa ajassa. Ja tuossa, jonka halusit tällä korvata, vielä lukeekin, että se ei käytä prosessoria, kun taas tämä nostaa prosessorin käyttöasteen sataan prosenttiin.

moptim [22.07.2006 16:54:46]

#

3/10 rivii menee kyl sub mainiin... ja toi on (ainakin olevinaan) suhteellisen tarkka

moptim [22.07.2006 16:56:19]

#

niinno joo...

moptim [22.07.2006 16:56:38]

#

mut tota kertointa voi muuttaa koneen mukaan

moptim [22.07.2006 17:02:03]

#

Ihan hyvin voisi inttää että Sleep-funktiokin syö 4 riviä.

 Private Declare Function Sleep Lib "user32" (ByVal MilliSeconds As Long) As Double                     'eka rivi

Private Sub Form_Load()                   'toinen rivi
Sleep 1000                                'kolmas rivi
End Sub                                   'ja neljäs

moptim [22.07.2006 17:02:16]

#

tai jotain tollasta

kayttaja-4976 [28.07.2006 12:52:42]

#

Kymmenen riviä? Neljä riviä? Aikamoista optimointia? :/

moptim [23.12.2006 09:43:09]

#

Joo. Tässä muuten toinen odottelija (heitto max 10 millisekuntia ylöspäin eikä tiletä sovellusta kuten perus Sleep)

Private Declare Sub Sleep Lib "user32" (ByVal dwMilliSeconds As Long)

Private Sub Venttaa(MilliSekat As Long)
  a = Timer + (MilliSekat * 1000)
  Do Until Timer > a
    Sleep 10
    DoEvents
  Loop
End Sub

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta