functie selecteren

Status
Niet open voor verdere reacties.

bn2vs

Terugkerende gebruiker
Lid geworden
18 aug 2007
Berichten
1.705
Hey,

Ik heb een timer die een sub elke 100ms laat uitvoeren. In die sub moet er afhaneklijk van wat de gebruiker voordat de timer werd gestart in heeft gegeven een functie uitgevoerd worden. Ik heb momenteel een select case in de sub die elke 100ms word uitgevoerd die de juiste functie bepaald. Ik ben echter op zoek naar een oplossing zodat ik maar 1x hoef te bepalen welke functie er nodig is, en die dan automatisch gebruik elke 100ms.

Iemand een idee?

Alvast bedankt :)
 
waarom een select case als je maar 1 functie wilt uitvoeren? Je verhaal is een beetje vaag, heb je iets van (pseudo)code?
 
Dit demonstreert mn probleem. Bij elke herhaling checked de case die value terwijl hij steeds dezelfde blijft. Een keer checken zou dus efficienter zijn.
Code:
herhalende sub()
  select case value
    case one : sub1()
    case two: sub2()
  end case
end sub

Zowel deze code als wat ik in mn eerste post schreef zijn versimpelde weergaven van het probleem in mn code, waar dit probleem wel voor een zeker prestatie verlies zorgt :(
 
beetje vage vraag hoor, wat moet ie checken dan? een textbox ofzo?
 
Dat maakt nix uit. De waarde blijft constant gedurende die herhalende event en zou dus maar 1x gecheckt moeten worden. Hoe en waar ik de oplossing in mn prog implementeer is geen probleem, maar hoe ik maak dat die maar 1X controleert wel :(
 
Als je nu eens een aparte sub maakt voor het bepalen van de case en deze opslaat in een globale variabele. Dan kan je in de herhaalde sub de case uit deze globale variabele halen zodat die altijd hetzelfde blijft.
Misschien het handigst om de case te submitten met een button op je form, waarmee dus de globale variabele gewijzigd kán worden. Op deze manier kun je toch nog de case wijzigen terwijl je herhaalde sub bezig is te runnen, maar het hoeft natuurlijk niet.
 
Als je nu eens een aparte sub maakt voor het bepalen van de case en deze opslaat in een globale variabele. Dan kan je in de herhaalde sub de case uit deze globale variabele halen zodat die altijd hetzelfde blijft.
Misschien het handigst om de case te submitten met een button op je form, waarmee dus de globale variabele gewijzigd kán worden. Op deze manier kun je toch nog de case wijzigen terwijl je herhaalde sub bezig is te runnen, maar het hoeft natuurlijk niet.

Dat verhelpt het probleem niet he. Ik zit met een globale variabele, dus die gaan selecten en in een andere te steken is nogal rond de pot draaien...
 
Volgens mij zou het wel handig zijn om even dat deel van je programma te posten waarin de case bepaald wordt. Ik heb namelijk het idee dat wat wij denken niet is waar jij precies mee bezig bent.
 
Code:
class mycalss

private withevents timer as new timer
private mijnWaarde as integer

sub initiate()
  mijnWaarde = new random.next(0,10)
  timer .start()
end sub

sub timer_tick()
  select case mijnWaarde 
    case 0: sub1()
    case 1: sub2()
    '...
  end case
end sub

end class

Mijn code posten is geen optie, en het zou in geen geval duidelijker zijn dan bovenstaand voorbeeld :)
 
Was dat nou zo moeilijk om te posten , en zo vaag te blijven?
Maar dit lijkt me de oplossing voor je probleem..

Code:
    Private Sub Initiate()
        Dim mijnRandom As New Random()
        Dim mijnWaarde As Integer = mijnRandom.Next(1, 4)
        Dim mijnMethode As Reflection.MethodInfo = Me.GetType.GetMethod("mijnSub" & mijnWaarde)
        mijnMethode.Invoke(Me, Nothing)
    End Sub

    Public Sub mijnSub1()
        MsgBox("dit is mijnSub1")
    End Sub

    Public Sub mijnSub2()
        MsgBox("dit is Sub2")
    End Sub

    Public Sub mijnSub3()
        MsgBox("dit is Sub3")
    End Sub
 
Ty :)
Ik probeer die oplosing zo dadelijk uit
 
Kan je een gelijkaardige oplossing ook toepassen voor methods? (zie code)

Code:
class mycalss

private withevents timer as new timer
private mijnWaarde as integer

sub initiate()
  mijnWaarde = new random.next(0,10)
  timer .start()
end sub

sub timer_tick()
  dim myObj as aClass
  select case mijnWaarde 
    case 0: myObj .method1()
    case 1: myObj .method2()
    '...
  end case
end sub

end class
 
Het lukt mij zo niet, moet ik iets verder in duiken...

maar waarom verander jij altijd je hulpvraag op het moment als iets is opgelost???
vraag dan gericht.
 
Blij te zien dat je probleem opgelost is, al had ik er zelf nooit opgekomen om het op deze manier te doen. Daarvoor is mijn VB kennis toch te basis denk ik :D

In elk geval veel plezier ermee!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan