Option Strict ON disallows conversions from 'integer' to 'string'???

Status
Niet open voor verdere reacties.

kartingfreak

Gebruiker
Lid geworden
20 mrt 2006
Berichten
45
yooo,

Ik ben hier met een project bezig "Sun Parks". Ik heb de interface al gemaakt en nu ben ik bezig met de code te typen, maar ik zit met een probleem.
In mijn interface heb ik een textbox voor het aantal personen in te geven die in het recreatiecentrum gaan verblijven. Ik heb die textbox "txtAantalPersonen" genoemt.

Naast die textbox heb ik ook gegevens over de huurder(s), lid van een organisatie (krijgen korting als ze lid zijn), extras(sauna, bubbelbad,...), als ze eetmalen willen hebben, enzo...

Nu heb ik in een klasse "Prijsberekening" alle prijzen gedeclareerd zoals (prijs eetmaal voor een kind, prijs eetmaal voor een volwassene, prijs van een bungalow, prijs van extras, enz...).

In mijn eindberekening heb ik ook een veldje "Prijs Eetmalen" voorzien. Die gaat dan de prijs weergeven van alle eetmalen opgeteld" en dit gebruik ik als code...

Private Sub btnBerekenen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBerekenen.Click
Dim objPersoon As New Personen
Dim Prijs As New Prijsberekening

objPersoon.AantalKinderen = CInt(txtKindermenu.Text)
objPersoon.AantalVolwassenen = CInt(txtVolwasseneMenu.Text)
txtEetmalen.Text = ((objPersoon.AantalKinderen) * Prijs.cintKinderMenu) + (objPersoon.AantalVolwassenen * Prijs.cintVolwasseneMenu)
End Sub

Maar bij de werkelijke berekening dus "txtEetmalen.Text = ((objPersoon.AantalKinderen) * Prijs.cintKinderMenu) + (objPersoon.AantalVolwassenen * Prijs.cintVolwasseneMenu)" krijg ik een foutmelding...
Option Strict On disallows implicit conversions from 'Integer to 'String'!!
Hoe kan ik dit oplossen?? help mij aub
 
En hoe staat "AantalKinderen", "AantalVolwassenen", "Prijs.cintKinderMenu" en "Prijs.cintVolwasseneMenu" gedeclareerd in je klasse? Allemaal als integer? Wat ik wel zou aanraden is om het type decimal te gebruiken wanneer je met geld werkt. Gewoon een tip uiteraard.

Het probleem van je vraag is eigenlijk dat je iets als een string hebt gedeclareerd. vb.net zet dit niet om naar een getal (het werkt wel wanneer je een string hebt bijvoorbeeld : dim getal as string = "5", maar dan moet de optie strict afstaan)

Je kan dit oplossen door de string te converteren naar een getal (bijvoorbeeld het type decimal)

dim s1 as string = "5", s2 as string = "appel"
dim d1, d2 as decimal
d1 = cdec(val(s1)) ' dit geeft de waarde 5.
d2 = cdec(val(s2)) 'dit geeft de waarde 0 omdat de value van een niet-numerieke string 0 is
 
mag ik anders mijn project is posten hier op de forum? want ik begrijp u oplossing niet zo goed :confused:
 
Code:
txtEetmalen.Text = [COLOR="Red"]Cstr[/COLOR]((objPersoon.AantalKinderen) * Prijs.cintKinderMenu) + (objPersoon.AantalVolwassenen * Prijs.cintVolwasseneMenu)
of
Code:
txtEetmalen.Text = ((objPersoon.AantalKinderen) * Prijs.cintKinderMenu) + (objPersoon.AantalVolwassenen * Prijs.cintVolwasseneMenu)))[COLOR="Red"].ToString()[/COLOR]
 
k dank u Ginanity
Ik ga het direct uittesten, maar ik moet eerst VB.NET opnieuw installeren omdat ik mijn pc heb moeten herinstalleren :)
 
k prima het werkt :P maar nu zit ik met het probleem dat hij de twee resultaten gewoon aan elkaar plakt (vb. 3kinderen en 2 volwassene menus = 75+60 = 135 en hij geeft gewoon 7560) :P Is niet echt juist denk ik xD
 
eerst uw bewerkingen uitvoer naar een variabele en deze variabele.tostring() tonen in uw textbox.

ps. Zoals reeds eerder werd aangeraden is het best dat je ipv INT DOUBLE gebruikt om ook met kommagetallen te kunnen werken
succes
 
ik heb nu dit als code

txtEetmalen.Text = ((objPersoon.AantalKinderen) * Prijs.cintKinderMenu).ToString + (objPersoon.AantalVolwassenen * Prijs.cintVolwasseneMenu).ToString

en wrm DOUBLE gebruiken. Ik heb al mijn prijzen in een klasse gedeclareerd als constanten en geen enkele is een komma getal :p en je kan moeilijk 1/2 persoon registeren :D
 
yes kheb het gevonden :) Dank u :)
Mag ik deze topic open laten in het geval dat ik opnieuw problemen heb?

groetjes
 
Als je andere problemen ondervindt, kan je beter een nieuw topic maken.
Ander weet een helper ook niet meer goed waar het over gaat. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan