Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: satunnainen valinta...

Sivun loppuun

Zero88 [22.04.2004 22:05:26]

#

miten tai millä koodilla voin tehdä sellasen että ohjelma valitsee satunnaisesti jonkun timerin ja käynnistää sen..?

Tiha [22.04.2004 22:25:11]

#

Esim VB:llä.Tee timerista indeksoitu Timer1(0....x)ja laita rnd arpomaan mikä indeksoiduista käynnistetään.

Sharph [23.04.2004 07:23:52]

#

Randomize ' alustetaan satunnaislukugeneraattori
Timer1(Int(Rnd()*MAX_TIMERIT)).Enabled = True ' arvotaan käynnistettävä Timer

sooda [23.04.2004 09:02:14]

#

se on lineaarinen satunnaislukugeneraattori(:D), ja MAX_TIMERIT saa Timer1.UBound

sooda [23.04.2004 15:57:38]

#

rndprogy, vb:ssä toimii myös pelkkä randomize.

rndprogy [23.04.2004 15:59:18]

#

Siis piti kirjottaa Ok mutta viesti poistui.

sooda [23.04.2004 16:06:07]

#

seli seli xD

remontti-reiska [23.04.2004 19:08:11]

#

Ja taas meni offtopikiksi. :)

Zero88 [25.04.2004 11:15:19]

#

Voisko joku näyttää mulle jonkun esimerkin että tajuun???

ps.jos timerit on indeksoitu niin miten voin antaa niille eri käskyt???

Topi91 kirjoitti:

Randomize ' alustetaan satunnaislukugeneraattori
Timer1(Int(Rnd()*MAX_TIMERIT)).Enabled = True ' arvotaan käynnistettävä Timer

laitanko tän formiin???

Antti Laaksonen [25.04.2004 11:30:51]

#

Eli olet siis jo luonut tarvittavan määrän Timereitä, joilla on sama nimi (seuraavassa Timer1), mutta eri indeksit? Sitten vain pistä vaikka Form_Loadiin (tai minne haluatkin) tämäntapainen koodi, joka käynnistää yhden Timereistä toimimaan esim. 0,5 sekunnin välein:

Private Sub Form_Load()
    Randomize Timer
    Timer1(Rnd * (Timer1.UBound + 1)).Interval = 500
End Sub

Timereillä on kyllä yhteinen aliohjelma, mutta indeksi selviää Index-muuttujasta. Tee siis jotain tällaista:

Private Sub Timer1_Timer(Index As Integer)
    Select Case Index
        Case 0
            MsgBox "Hellurei!"
        Case 1
            Beep
        Case 2
            End
    End Select
End Sub

hunajavohveli [25.04.2004 11:36:34]

#

No minä jo mietinkin, että eikö Visual Basicissa saa muka olioita mitenkään taulukon tapaisesti käsiteltyä. Aina piti kirjoittaa Timer1, Timer2, Timer3... :) nyt selvisi tämäkin asia.

Zero88 [25.04.2004 11:56:34]

#

Tein tällaisen koodin...

Private Sub Form_Load()
Randomize Timer
Timer1(Rnd * (Timer1.UBound + 1)).Interval = 500
End Sub

Private Sub Timer1_Timer(Index As Integer)
   Select Case Index
       Case 0
           End
       Case 1
           Picture1.Left = Picture1.Left + 50
       Case 2
           Picture2.Left = Picture2.Left + 10
    End Select
End Sub

mikäs on vikana kun molemmat picturet lähtee liikkumaan??

välillä tulee ilmoitus:
Runtime error '340':'
Control array element '3' doesnt exist.

ja sit kun painan debug niin se viittaa tähän kohtaan...

Timer1(Rnd * (Timer1.UBound + 1)).Interval = 500

mikä neuvoksi?

hunajavohveli [25.04.2004 12:15:56]

#

Et ole pistänyt minkään Timerin indexiin kolmosta.

petrinm [25.04.2004 12:19:28]

#

Toi ERRORi on että se ei löydä Timer1 jonka indexsi on 3.
Poista tosta arvonta lauseesta toi '+ 1'

Antti Laaksonen [25.04.2004 12:24:42]

#

Koodi kyllä huomioi suoraan Timerien määrän. Mutta oletko aloittanut Timerien numeroinnin ykkösestä vai nollasta? Jos olet aloittanut ykkösestä, muuta koodia näin:

Timer1(Rnd * Timer1.UBound + 1).Interval = 500

Onhan kaikkien Timerien Interval aluksi 0? Muuten ne tietenkin lähtevät liikkumaan arvonnasta riippumatta.

Zero88 [25.04.2004 12:43:09]

#

Onhan kaikkien Timerien Interval aluksi 0? Muuten ne tietenkin lähtevät liikkumaan arvonnasta riippumatta.

[/lainaus]

hehheh... ei tainnu olla... :)


no nyt otin pois ton +1 ja laitoin intervalliks 0 niin nyt toimii hyvin..

kiitti kaikille.:-)


Sivun alkuun

Vastaus

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

Tietoa sivustosta