[VB] Random Text

Pagina: 1
Acties:

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik wil in een text box een random textje neerzetten iedere keer als je op een knop drukt..

Je moet toch iets met "Select Case" gebruiken ?

code:
1
2
3
4
5
6
7
8
Select Case RandomText
Case 1 
           txtRandomText.Text = "Blaat"

Case 2 
           txtRandomText.Text= "Nog meer Blaat"

End Select


Of klopt hier helemaal nix van ? Mijn pogingen tot nu toe doen dit namelijk sterk vermoeden 8)

  • DinX
  • Registratie: Februari 2002
  • Laatst online: 27-08 14:23

DinX

Motormuis

De tekst in een klein dbase-je of in een file zetten en deze random uitlezen :?

Marokko 2015: Route
Sat Tracker: SpotWalla
Blog: Gone for a ride


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:14

gorgi_19

Kruimeltjes zijn weer op :9

Op Google zoeken, moet je vast ook wel wat kunnen vinden.. Random nummers, random tekst.. Principe is hetzelfde... :)

En er zijn meer mensen die dit hebben bedacht en dit online hebben gezet.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
hmm kan anders nix vinden..

Denk je dat ik niet EERST google voor ik wat post ??

Random numbers werken namelijk anders.... je doet dan:

code:
1
2
3
4
5
6
7
Private Sub Blaat()

nummer = Int(8 * rnd + 1)

lblNummer.Caption = nummer

End sub

  • Hertog
  • Registratie: Juni 2002
  • Laatst online: 20:53

Hertog

Aut bibat, aut abeat

En nu maak je een array van strings en zeg je lblTekst.Caption = teksten(nummer)

"Pray, v. To ask that the laws of the universe be annulled in behalf of a single petitioner, confessedly unworthy." --Ambrose Bierce, The Devil's Dictionary


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ah kijk daar kan ik wat mee!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:14

gorgi_19

Kruimeltjes zijn weer op :9

Denk je dat ik niet EERST google voor ik wat post ??
:?

Erhm.. Nope.... Althans, niet goed... Tweede link kwam ik bijvoorbeeld dit stukje code tegen:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
(knip)
Answer = (Int(Rnd * 8) + 1)
If Answer = 1 Then: Label1.Caption = "!"
If Answer = 2 Then: Label1.Caption = "!!"
If Answer = 3 Then: Label1.Caption = "!!!"
If Answer = 4 Then: Label1.Caption = "!!!!"
If Answer = 5 Then: Label1.Caption = "!!!!!"
If Answer = 6 Then: Label1.Caption = "!!!!!!"
If Answer = 7 Then: Label1.Caption = "!!!!!!!"
If Answer = 8 Then: Label1.Caption = "!!!!!!!!"
End Sub


(Ik stuur je wel naar Google met keywords natuurlijk.. ;))

[ Voor 32% gewijzigd door gorgi_19 op 17-12-2002 22:09 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
die heb ik gestest......

maar die gaat knipperen in de text box :D

  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

ViNyL schreef op 17 December 2002 @ 21:58:
hmm kan anders nix vinden..

Denk je dat ik niet EERST google voor ik wat post ??

Random numbers werken namelijk anders.... je doet dan:

code:
1
2
3
4
5
6
7
Private Sub Blaat()

nummer = Int(8 * rnd + 1)

lblNummer.Caption = nummer

End sub
Deze kan je anders in combinatie met je eigen code (select case) gebruiken.
Een kleine tip zet er eerst randomize boven dan is het pas echt 'random'

//typo

[ Voor 6% gewijzigd door KO op 17-12-2002 22:22 ]

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


  • Hertog
  • Registratie: Juni 2002
  • Laatst online: 20:53

Hertog

Aut bibat, aut abeat

gorgi: die dubbele punt kan weg en voor de rest is die code gewoon vies :)
KO: select case is al iets beter maar wat is er mis met een gewone array?

"Pray, v. To ask that the laws of the universe be annulled in behalf of a single petitioner, confessedly unworthy." --Ambrose Bierce, The Devil's Dictionary


  • Aerox.2000
  • Registratie: Februari 2001
  • Laatst online: 13-05 08:57
Bedoel je zoiets? :?
Visual Basic:
1
2
3
4
5
6
Randomize
For a = 1 To 100
    data = data + Chr(Round(254 * Rnd(1), 0))
    DoEvents
Next
Text1.text = data

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Hertog schreef op 17 december 2002 @ 22:25:
gorgi: die dubbele punt kan weg en voor de rest is die code gewoon vies :)
KO: select case is al iets beter maar wat is er mis met een gewone array?

Waarom is code vies? Leg dat eventjes uit. Ik vind uw code trouwens ook niet al te flexibel

Je legt je bij een array al vast op twee punten
1) De grootte (staat immers in je random en in je array creation code)
2) De gebruiker van de array moet de interne werking van de array kennen

Gebruik liever een Collectie datatype welke je benaderd door middel van een (specefiekere) Collection interface. In java gaat dat bijv zo:
Java:
1
List theMessages = new ArrayList( );

Nu kan ik elk moment de boel veranderen in een LinkedList or whatever zonder dat ik overal in m'n code moet gaan hakken.
MAW die code is gewoon vies ;)

  • Hertog
  • Registratie: Juni 2002
  • Laatst online: 20:53

Hertog

Aut bibat, aut abeat

arrays in visual basic hoeven niet vast te liggen. Je declareert je array gewoon leeg, en iedere keer als je er iets extra in stopt kun je hem met redim preserved vergroten.
En in de random functie kun je hem met array.size (dacht ik) opvragen.

In de code met al die ifjes is dat nu net een stuk moeilijker. Iedere keer als je een nieuwe zin wilt toevoegen moet je een nieuwe if-regel intikken (copypasten, maar dan nog) Laat staan dat je runtime dingen kan toevoegen, met een array kun je hier wel een functie voor maken.

Waarom die if-code vies is? Omdat het programma iedere keer alle ifs moet doorlezen, en dus iedere keer moet vergelijken. Met een array kan dat in 1 regel (hetzelfde geldt overigens voor de case)
Bovendien kun je, zoals hierboven al gezegd is, helemaal niets doen om de teksten toe te voegen of te verwijder, ongeveer zoals ik hierboven ook al zei. Je moet me toch eens uitleggen waarom mijn code niet flexibel is....

Met een Collection krijg je inderdaad hetzelfde. Ik gebruik meestal arrays als het ingewiikelder wordt, voor iets simpels als een rijtje zinnen is een array ook nog wel geschikt. Ik denk dat het met een collection ongeveer dezelfde code zal worden.

"Pray, v. To ask that the laws of the universe be annulled in behalf of a single petitioner, confessedly unworthy." --Ambrose Bierce, The Devil's Dictionary


  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Hertog schreef op 17 December 2002 @ 22:25:
gorgi: die dubbele punt kan weg en voor de rest is die code gewoon vies :)
KO: select case is al iets beter maar wat is er mis met een gewone array?
Er is niets mis met een array, maar omdat er al een begin was met select case kan je hiermee doorgaan. Oftewel je laat random een nummer generen en daarna met select case kun je kiezen.

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


  • Hertog
  • Registratie: Juni 2002
  • Laatst online: 20:53

Hertog

Aut bibat, aut abeat

Er was niet echt een begin met select case, dat was meer een voorstel van de topic starter. Select case vind ik in ieder geval netter staan als een rijtje ifjes, maar als de topicstarter tijdens het runnen zinnen wil toevoegen of verwijderen gaat dat niet werken. Topicstarter: het hangt er dus vanaf wat je wilt :)

"Pray, v. To ask that the laws of the universe be annulled in behalf of a single petitioner, confessedly unworthy." --Ambrose Bierce, The Devil's Dictionary


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hehe ok...

Nou aangezien ik nog niet zo geweldig ben in VB denk ik dat ik ze allebei eens ga bekijken.

Maar wat je zei over die array gister..daar kwam ik toch niet helemaal uit...

  • Hertog
  • Registratie: Juni 2002
  • Laatst online: 20:53

Hertog

Aut bibat, aut abeat

'In je module:
Public teksten() As String
Public aantalTeksten As Integer

'Om teksten aan je array toe te voegen:
Sub VoegToe(Tekst as string)
aantalTeksten = aantalTeksten + 1
ReDim Preserve teksten(aantalTeksten)
teksten(aantalTeksten) = Tekst
End Sub

'Om een random tekst op te vragen:
Sub zetTekst()
Dim indexNummer As Integer
Randomize
indexNummer = Rnd() * aantalTeksten
Label1.Caption =teksten(indexNummer) 'Of wat je er ook mee wil doen :)
End sub

'Om alvast een aantal teksten in van te voren erin te zetten:
aantalTeksten = 1
ReDim Preserve teksten(aantalTeksten)
teksten(0) = "Tekst1"
teksten(1) = "Tekst2"
Zo werkt het (Net zelf getest ;) )

Offtopic: Maar even met quote ipv code gestopt, want bij code worden de witregels weggehaald :?

"Pray, v. To ask that the laws of the universe be annulled in behalf of a single petitioner, confessedly unworthy." --Ambrose Bierce, The Devil's Dictionary


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Dank voor de voorbeelden !
Label1.Caption =teksten(indexNummer) 'Of wat je er ook mee wil doen
Je hebt achter "teksten" (indexNummer) staan. Maar die moet je toch niet opgeven omdat hij die random pakt ?

  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

ViNyL schreef op 18 december 2002 @ 12:04:
Dank voor de voorbeelden !


[...]


Je hebt achter "teksten" (indexNummer) staan. Maar die moet je toch niet opgeven omdat hij die random pakt ?
Dat (indexNummer) is dus het random getal

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery

Pagina: 1