Avatar billede visualdeveloper Nybegynder
10. august 2005 - 22:41 Der er 21 kommentarer og
1 løsning

Begynder spg til visual basic !

Hej eksperter...

jeg er ved at lave et program hvor man skal lægge to tal sammen.

det er meningen at når man starter programmet skal der komme to tilfældige tal mellem 1 og 1000 i txtboxene 1 og 2 men det kan jeg ikke lige finde ud af ?

så ved jeg ikke om dette virker

Command1_click()
If text1.value + text2.value = text3.value then
msgbox("du svarede rigtigt på spg'et")
'her skal der komme nogle nye tilfældige tal i txt1 og txt2
else
msgbox("Du svarede forkert på spg'et prøv igen")
'de samme tal skal være der
Avatar billede kabbak Professor
10. august 2005 - 22:56 #1
Text1.Text = Int(Rnd * 1000) + 1
Text2.Text = Int(Rnd * 1000) + 1
Avatar billede joern Nybegynder
10. august 2005 - 23:02 #2
Hej.

For at danne tilfældige tal, skal du bruge en random-funktion, i VB hedder den rnd.

tekstfelter har ikke en egenskab (property) der hedder value.  Du må tage værdien - Val - af indholdet i et tekstfelt, når det er tastet ind, men når indholdet er dannet som en tal-variabel, kan du jo blot addere disse direkte.

Men skal brugere 'gætte' hvad summen er?  Nogle kan vel lægge tallene sammen :-)

Du skal nok ikke forvente at du her på 'Eksperten' kan få løbende hjælp til at lære at programmere, du må læse bøger, hefter eller on-line hjælpen for at se korrekt syntaks.  Fra online-hjælp om Rnd:
---------------------------
This example uses the Rnd function to generate a random integer value from 1 to 6.

Dim MyValue
MyValue = Int((6 * Rnd) + 1)    ' Generate random value between 1 and 6.
------------------------------
Int tager heltals-værdien.

Hvis tal der er indtastet skal adderes:

sum = val(text1.text) + val(text2.text)

I øvrigt har 'Eksperten' en søgefunktion, hvor du kan søge i tusindvis af besvarede sprøgsmål.  Og der er meget på nettet om VB, brug evt. Google for at finde kode-eksempler.  http://vb-helper.com er bare ét blandt snesevis.

Skriv din færdige kode ind her, og tag selv point.  Jeg har ikke brug for dem.

M.v.h.  Jørn
Avatar billede kabbak Professor
10. august 2005 - 23:03 #3
Private Sub Command1_Click()

If Val(Text1.Text) + Val(Text2.Text) = Val(Text3.Text) Then
MsgBox ("du svarede rigtigt på  spgørgsmålet")
Text1.Text = Int(Rnd * 1000) + 1
Text2.Text = Int(Rnd * 1000) + 1
Else
MsgBox ("Du svarede forkert på spgørgsmålet prøv igen")
'de samme tal skal være der
End If
End Sub


sådan skal den se ud
Avatar billede martin_moth Mester
10. august 2005 - 23:07 #4
Lige for at skære det ud i pap, nu du er ny ;o)

rnd returnerer et tilfældigt decimaltal mellem 0 og 0.9999999......

Ved at gange tallet med 1000 får du altså et tal mellem 0 og 999.999

Bruger du int-funktionen, der tager heltallet og smider resten væk, får du 0-999 (uden decimal)

Og lægger du 1 til, får du 1-1000.

sagt kortere: Int(Rnd * 1000) + 1
Avatar billede martin_moth Mester
10. august 2005 - 23:11 #5
Og et tip: inden du går videre, så gå i VB i tools-> options, under "edit" og vælg "require variable decleration". Uden jeg skal forklare det nærmere, undgår du en masse fejl ved at have den mulighed vinket af

samtidig kan du vinke af under "envireoment" at du vil Save changes when a program starts. Så mister du ikke alt når programmet går ned ( www.eksperten.dk/spm/639092= )
Avatar billede martin_moth Mester
10. august 2005 - 23:12 #6
Rigtigt link: http://www.eksperten.dk/spm/639092 (sengetid)
Avatar billede sjh Nybegynder
11. august 2005 - 01:20 #7
HUSK at starte randomize generator.. ;)

Private Sub Form_Load()
  Randomize '<- randomize generator
  Text1.Text = Int(Rnd * 1000) + 1
  Text2.Text = Int(Rnd * 1000) + 1
End Sub
Avatar billede visualdeveloper Nybegynder
12. august 2005 - 14:40 #8
Nu har jeg indsat dette:

-----------------------------------------------------

Private Sub Command1_Click()
If Val(Text1.Text) + Val(Text2.Text) = Val(Text3.Text) Then
MsgBox ("du svarede rigtigt på  spgørgsmålet")
Text1.Text = Int(Rnd * 1000) + 1
Text2.Text = Int(Rnd * 1000) + 1
Else
MsgBox ("Du svarede forkert på spgørgsmålet prøv igen")
'de samme tal skal være der
End If

End Sub

Private Sub Form_Load()
  Randomize '<- randomize generator
  Text1.Text = Int(Rnd * 1000) + 1
  Text2.Text = Int(Rnd * 1000) + 1
End Sub

-----------------------------------------------------

Men der kommer en fejl ved
If Val(Text1.Text) + Val(Text2.Text) = Val(Text3.Text) Then

Er der ikke en der kan sige hvad det er ?
Avatar billede visualdeveloper Nybegynder
12. august 2005 - 15:30 #9
det burde da være rigtigt ??
Avatar billede joern Nybegynder
12. august 2005 - 17:48 #10
Hej.

Har du indtastet noget i felterne, nå du starter den sub?  Ellers får du nok fejl p.g.a val af "ingenting".

M.v.h. Jørn
Avatar billede kabbak Professor
12. august 2005 - 18:29 #11
Har du de 3 tekstbokse, som hedder
Text1
Text2
og Text3
Avatar billede kabbak Professor
12. august 2005 - 18:36 #12
Private Sub Command1_Click()
If IsNumeric(Text3.Text) Then
If Val(Text1.Text) + Val(Text2.Text) = Val(Text3.Text) Then
MsgBox ("du svarede rigtigt på  spgørgsmålet")
Text1.Text = Int(Rnd * 1000) + 1
Text2.Text = Int(Rnd * 1000) + 1
Else
MsgBox ("Du svarede forkert på spgørgsmålet prøv igen")
'de samme tal skal være der
End If
Else
MsgBox " du skal taste et tal"
End If
End Sub

Prøv den, den tjekker om du taster tal ind
Avatar billede visualdeveloper Nybegynder
13. august 2005 - 14:35 #13
det virker stadig ikke ?
Avatar billede visualdeveloper Nybegynder
13. august 2005 - 14:36 #14
den skriver:

Run-Time error '424' ??
Avatar billede kabbak Professor
13. august 2005 - 15:33 #15
hvilken linie
Avatar billede kabbak Professor
13. august 2005 - 15:39 #16
det betyder at der er et felt den ikke kan finde, er du sikker på navnene på textboksene
Avatar billede kabbak Professor
13. august 2005 - 16:29 #17
prøv a dobbeltklikke på textboksene, en af gangen, så viser den dig koden.

eks.
Private Sub Text1_Change()

End Sub

nu kan du se at den hedder Text1

gør det samme for de andre 2

hvis den hedder noget andet, så ret i koden, eller giv den et andet navn.
Avatar billede kabbak Professor
13. august 2005 - 16:29 #18
hvis den hedder noget andet, end det den skal, så ret i koden, eller giv den et andet navn.
Avatar billede visualdeveloper Nybegynder
13. august 2005 - 17:38 #19
nu har jeg fået det til at virke nu skal jeg bare lige lave det sådan at man kan trykke enter istedet for command1 ??
Avatar billede kabbak Professor
13. august 2005 - 18:36 #20
Private Sub Text3_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(Text3.Text) Then
If Val(Text1.Text) + Val(Text2.Text) = Val(Text3.Text) Then
MsgBox ("du svarede rigtigt på  spgørgsmålet")
Text1.Text = Int(Rnd * 1000) + 1
Text2.Text = Int(Rnd * 1000) + 1
Else
MsgBox ("Du svarede forkert på spgørgsmålet prøv igen")
'de samme tal skal være der
End If
Else
MsgBox " du skal taste et tal"
End If
End If
End Sub

Nu skal du ikke mere bruge koden fra, Private Sub Command1_Click()

Og du skal være sikker på at den textbox du skriver resultatet i, hedder Text3
Avatar billede visualdeveloper Nybegynder
13. august 2005 - 20:07 #21
mange tak kabbak læg et svar og få dine points !
Avatar billede kabbak Professor
13. august 2005 - 20:22 #22
et svar ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester