miten tai millä koodilla voin tehdä sellasen että ohjelma valitsee satunnaisesti jonkun timerin ja käynnistää sen..?
Esim VB:llä.Tee timerista indeksoitu Timer1(0....x)ja laita rnd arpomaan mikä indeksoiduista käynnistetään.
Randomize ' alustetaan satunnaislukugeneraattori Timer1(Int(Rnd()*MAX_TIMERIT)).Enabled = True ' arvotaan käynnistettävä Timer
se on lineaarinen satunnaislukugeneraattori(:D), ja MAX_TIMERIT saa Timer1.UBound
rndprogy, vb:ssä toimii myös pelkkä randomize.
Siis piti kirjottaa Ok mutta viesti poistui.
seli seli xD
Ja taas meni offtopikiksi. :)
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???
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
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.
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?
Et ole pistänyt minkään Timerin indexiin kolmosta.
Toi ERRORi on että se ei löydä Timer1 jonka indexsi on 3.
Poista tosta arvonta lauseesta toi '+ 1'
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.
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.:-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.