Visual Basic 6.0 *HELP!*

Moderators: EvelijnS, Murthul, Muurp, Berdien

Antwoord op onderwerpPlaats een reactie
 
 
Ethelate

Berichten: 19830
Geregistreerd: 02-10-01

Visual Basic 6.0 *HELP!*

Link naar dit bericht Geplaatst door de TopicStarter: 17-06-03 11:09

Oke, bij informatica moeten wij nu programmmeren ... echt een ramp Clown
Naja, met een boekje er bij, uitleg volgen is het best te doen en tot nu toe kwam ik er overal wel uit, maar nu moeten we zelf een programma schrijven *SLIK*

Iemand die verstand heeft van Visual basic?
Ik moet een programma krijgen dat de inhoud berekend....

Code
Private Sub lstFiguur_Click()
'leest strR uit txtR.Text
'zet strR om naar r (Double)
'txtBoodschap.Text="Vul waarde voor r in en selecteer een figuur"


'declaraties
Dim r As Double
Dim pi As Double
Dim I As Double

Dim strR As String
Dim strFiguur As String
Dim strBoodschap As String
Dim strI As String

If IsNumeric(txtR.Text) Then
      strR = txtR.Text
      r = Val(strR)
      pi = 3.1415927
     If lstFiguur.Text = "bol" Then I = (4 / 3) * pi * r ^ 3 [u]= txtInhoud.Text[/u]
     If lstFiguur.Text = "kubus" Then I = r ^ 3 [u]= txtInhoud.Text[/u]txtInhoud.Text = Str(I)

Else
     TxtBoodschap.Text = "Verkeerde invoer."
     Exit Sub
     End If
End Sub



Private Sub List1_Click()

End Sub

Private Sub stop_Click()
End
End Sub

Private Sub txtInhoud_Change()
 
txtInhoud.Text = Str(I)

End Sub



Ik kan een getal invullen en kiezen tussen BOL of KUBUS*met List*, en dan start het programma dus, alleen hij geeft altijd 0 Scheve mond
Als ik geen cijfer invul, geeft hij wel de melding Verkeerde invoer enzo...
het zit dus echt in de uitvoer/berekening... Scheve mond
Echt al vanalles geprobeert... hte onderstreepte heb ik dus nu als noodoplossing, voor het idee (als de leraar alleen de code controleert Knipoog )
Maar het werkt dus niet...

Een reddende engel hier?
Wie kan me helpen? Verward

Sommige ezels kunnen enkel over paarden praten


leentje
Berichten: 3822
Geregistreerd: 02-06-02

Link naar dit bericht Geplaatst: 17-06-03 11:14

Ik kan alleen maar programmeren in Java en TurboPascal en ben dus niet zo goed bekend met Visual Basic. Maar als hij wel ziet of je al dan niet een cijfer invoert (bij niet invoeren de foutmelding geeft), en je krijgt als resultaat nul, wil dit waarschijnlijk zeggen dat er iets fout gaat op het moment dat je de string met daarin de straal/zijde omzet naar de double straal/zijde
kijk dat dus even na, of die code volledig correct is enzo

http://www.open-canoe.be
Best friends are the ones that can see the hurt in your eyes, when everyone else is fooled by your smile.

BartVB
Eigenaar

Berichten: 36252
Geregistreerd: 08-01-01
Woonplaats: Arnhem

Link naar dit bericht Geplaatst: 17-06-03 11:22

Wat als je:
r = Val(strR)
Vervangt door
r = strR.Text
?

IMO doet VB niet echt aan typing? Dus of je ergens nou een stuk tekst of een getal in stopt zou niet uit moeten maken, als je een string gaat vermenigvuldigen snapt ie als het goed is zelf dat hij de string als getal moet behandelen.

Maar goed, ik heb ooit 1x een VB project op de TU moeten maken, daarna noooooit meer. Brrr, onoverzichtelijk taaltje Scheve mond

Zorg er verder voor dat je bij dit soort problemen ergens laat zien wat er gebeurd, gooi de waarde van die 'strR' ergens heen enzo, gewoon om te kijken wat er wel/niet gebeurd.

ƃuılıǝɔ ǝɥʇ uo ƃuıɔuɐp ǝɹ,ǝʍ uǝɥʍ 'ƃuılǝǝɟ ɐ ʇɐɥʍ ɥo
"Als je niets te verbergen hebt, ben je een slechte paashaas" - Loesje

Ethelate

Berichten: 19830
Geregistreerd: 02-10-01

Link naar dit bericht Geplaatst door de TopicStarter: 17-06-03 11:31

Code
      strR = txtR.Text
      r = strR.Txt


krijg ik ene foutmelding...
Staat ook erg tegenstrijdig Verward

Sommige ezels kunnen enkel over paarden praten

Ethelate

Berichten: 19830
Geregistreerd: 02-10-01

Link naar dit bericht Geplaatst door de TopicStarter: 17-06-03 11:34

ga die leraar dadelijk maar weer eens opzoeken...

Sommige ezels kunnen enkel over paarden praten

BartVB
Eigenaar

Berichten: 36252
Geregistreerd: 08-01-01
Woonplaats: Arnhem

Link naar dit bericht Geplaatst: 17-06-03 11:39

Oh, sorry. Klopt Haha! Ik zat niet echt op te letten Knipoog

Hmm, heb zo snel geen idee dan Haha! Kijk even wat de waarde is van die variabelen voor je gaat rekenen.

ƃuılıǝɔ ǝɥʇ uo ƃuıɔuɐp ǝɹ,ǝʍ uǝɥʍ 'ƃuılǝǝɟ ɐ ʇɐɥʍ ɥo
"Als je niets te verbergen hebt, ben je een slechte paashaas" - Loesje

Lielle

Berichten: 64667
Geregistreerd: 12-01-01

Link naar dit bericht Geplaatst: 17-06-03 11:43

Ik ben geen VB programmeur (thank god!) maar de basisprincipes van programmeren zijn mij niet onbekend Haha!

Als je er niet uitkomt kun je debug messages inbouwen waarbij je steeds tussenwaarden laat uitprinten. In jouw geval zou ik het als volgt doen, maar let niet op de syntax, ik schrijf pseudocode want VB ken ik dus onvoldoende. Je moet het zelf even omzetten naar echte VB code. Verder heb ik de layout van je IF statement aangepast omdat het dan beter te lezen is (ook een goede gewoonte!). En terwijl ik dat laatste zit te doen zie ik de fout al *LOL* Je bent een else en een paar keer endif vergeten *LOL* Het voordeel van het laten inspringen van je code is dat je daar dus vanzelf achter komt. Probeer het nog eens zou ik zeggen.


Nog een paar opmerkingen:

- kun je Pi niet als een constante definieren in VB? Dat is nl veel logischer, de waarde van pi zal vast niet anders worden dan 3.1415 *LOL*
- ik heb wat toelichtend commentaar erbij gezet, goede gewoonte!
- r gebruik je als twee verschillende grootheden, de ene keer als de straal van een bol, de andere keer als de zijde van een kubus. Dat is niet mooi programmeren, en leidt tot behoorlijke verwarring. Verder zou ik niet I gebruiken maar Inhoud, duidelijker naam.
- ik neem aan dat je maar een deel van de sub hebt gekopieerd, anders definieer je namelijk een flink aantal variabelen die niet worden gebruikt.

Kortom bij mij zou het er zo uit zien (alleen gebruikte variabelen, inspringen, naamgeving, debug messages):

Code
Private Sub lstFiguur_Click()
'leest strR uit txtR.Text
'zet strR om naar r (Double)
'berekent de inhoud van het gekozen lichaam

'declaraties
Dim straal As Double   #  straal van een bol
Dim zijde as Double  # zijde van een kubus
Dim pi As Double  # pi is constant getal
Dim Inhoud As Double   # Inhoud van een lichaam

[color=red]# hier zou dus een heel stuk staan dat het getal en de het lichaam krijgt van de gebruiker[/color]

  pi = 3.1415927
  Print "constante waarde van pi is " + pi
  If IsNumeric(txtR.Text)
  Then
     print "getalletje !!!"[/color]
     If lstFiguur.Text = "bol"
     Then
        print ("dit is een bol")
        Straal = Val(txtR.Text)
        print "de straal is " + straal
        Inhoud = (4 / 3) * pi * r ^ 3
        print "de inhoud is " + inhoud
     Else
         If lstFiguur.Text = "kubus"
         Then
            print ("dit is een kubus")
            zijde = Val(txtR.Text)
            print "de zijde is " + zijde
            I = r ^ 3
            print "de inhoud is " + inhoud
         Else
            print ("een onbekende figuur")
            Exit Sub
         EndIf
      EndIf
  Else
     TxtBoodschap.Text = "Verkeerde invoer."
  End If
End Sub
Laatst bijgewerkt door Lielle op 17-06-03 11:49, in het totaal 1 keer bewerkt

leentje
Berichten: 3822
Geregistreerd: 02-06-02

Link naar dit bericht Geplaatst: 17-06-03 11:48

Lielle schreef:
Je moet het zelf even omzetten naar echte VB code. Verder heb ik de layout van je IF statement aangepast omdat het dan beter te lezen is (ook een goede gewoonte!). En terwijl ik dat laatste zit te doen zie ik de fout al *LOL* Je bent een else en een paar keer endif vergeten *LOL*

Daar had ik dus ook enkele vraagtekens bij, bij die IF statements, maar omdat ik VB niet ken heb ik daar maar niets over gezegd Clown

http://www.open-canoe.be
Best friends are the ones that can see the hurt in your eyes, when everyone else is fooled by your smile.


Antwoord op onderwerpPlaats een reactie