[VB.NET] Optellen *

Pagina: 1
Acties:
  • 292 views sinds 30-01-2008

  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Ik heb een vraagje over het optellen van getallen in VB.NET. Ik heb de code:

Private Sub cmdCount_Click()
Dim a As String
Dim b As String

a = txt1.Text
b = txt2.Text

count.Text = a + b
End Sub

gebruikt, txt1 en txt2 bevatten de getallen (textboxes) en in count (ook een textbox) moet het resultaat verschijnen, alleen werkt dat niet bij +. Volgens een vb.NET boekje zou dit wel moeten werken, maar als a = 2 en b = 4, wordt 'count.Text' '24', in plaats van 6. vermenigvuldigen, delen en aftrekken werkt wel gewoon op de manier, weet iemand misschien wat ik hier fout doe:s?

Verwijderd

je telt geen getallen op maar je telt de strings op. Je moet a en b eerst omzetten naar een nummer, of misschien kun je ze al eerder als integer/ float declareren maar dan moet die textbox ook een nummer kunnen geven.

  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Ah, bedankt, ik heb nu Dim a As String en Dim b As String in ... As Integer veranderd en nu werkt het inderderdaad wel...

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Zie zoepnek.

Je concateneert strings, en telt geen getallen op. Je zult die strings eerst moeten casten naar een numerieke waarde.

Ik denk ook dat je erop rekent dat VB.NET die values impliciet voor jou gaat gaan casten, maar dat kan je beter niet doen. Ga zelf die strings gaan casten.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Jannis schreef op 18 August 2003 @ 15:57:
Ah, bedankt, ik heb nu Dim a As String en Dim b As String in ... As Integer veranderd en nu werkt het inderderdaad wel...
Nu ga je dus vb.net automatisch die casts laten verzorgen. Ik zelf vind dat nogal ranzig en een slechte gewoonte.
Het is beter dat je het zelf doet, check de Convert class bv. eens.

https://fgheysels.github.io/


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dit is eigenlijk geen cast, maar een conversie.

Bij een cast is die expressie die je cast al van het correcte type. Je geeft alleen aan dat jij denkt te weten dat dit zo is. Een string is echter geen int: de string moet echt geconverteerd worden naar een int.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Waar heb je het over met die cast en conversies:-s? Dat script werkt nu hier (alleen met 'string' door 'Integer' vervangen), maar zonder iets wat op 'cast' lijkt?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Jannis schreef op 18 August 2003 @ 16:10:
maar zonder iets wat op 'cast' lijkt?
Dat denk jij.
Geef eens in 1 van die textBoxen iets in dat niet numeriek is.

[ Voor 18% gewijzigd door whoami op 18-08-2003 16:12 ]

https://fgheysels.github.io/


Verwijderd

casten = aangeven welk type het is, m.a.w: wat het type is dat door de compiler gelezen moet worden

conversie = type veranderen

  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Ow zo, ik dacht dat je het over een code ofzo had:-)..

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jannis: Ow zo
Ik betwijfel ernstig of je het nu echt snapt, dus als ik jou was zou ik voortaan vooral door vragen. Voordat je het weet loopt er een hier gek rond die wat tijd vrijmaakt om je wat te leren ;).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Ik snap het idd ja, de tekst in dat boekje vertelde iets anders dan wat ik er uit begreep, maar het script werkt nu wel:),

weet je misschien ook hoe ik bij een getal tussen 100.000 en 999.999 een . na 3 cijfers in kan voeren, en bij een getal tussen de 1.000.000 en 9.999.999 na 1 cijfer en na 4 cijfers? want nu wordt het een zootje wanneer het getal boven de 10.000 uitkomt:s

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

ik geloof niet dat mbravenboer erg bedreven is in vb ;)

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 20-08 09:45

Armageddon_2k

Trotse eigenaar: Yamaha R6

Jonges doe es moeilijk
count.text = val(text1.text) + val(text2.text)

  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
count.text = val(text1.text) + val(text2.text), ok, maar hoe kan ik daarmee automatisch een . invoegen na bijv. 3 tekens? (1388572384 moet dus 1.388.572.384 worden)

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 20-08 09:45

Armageddon_2k

Trotse eigenaar: Yamaha R6

door van count.text een waarde te maken en te dimen maar dan kom je weer op al die andere mogelijk heden, behalve dat je dan maar 1 waarde hoeft te dimmen (count.text) en niet A en B

[ Voor 28% gewijzigd door Armageddon_2k op 18-08-2003 17:21 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 vraagt zich af waar sommigen mee bezig zijn? :?

Sowiesie vind ik impliciet ranzig; daar heeft VB.Net Convert.ToDouble (of welke je dan ook wilt gebruiken, Convert.ToInt32). In geval van integer kan je bovendien Int32.Parse gebruiken.

Verder niet vergeten om je invoer te gebruiken; kan je onder andere regular expresisons voor gebruiken omdat voor elkaar te krijgen. Anders kan je bij een verkeerde invoer nare exceptions krijgen.

En nu naar de formatting. Converteer de resultaatvariabele naar een string en gebruik vervolgens String.Format om hem als nummer weer te geven. Afhankelijke van de regionale instellingen wordt die dan goed weergegeven.
Armageddon_2k schreef op 18 August 2003 @ 17:20:
door van count.text een waarde te maken en te dimen maar dan kom je weer op al die andere mogelijk heden, behalve dat je dan maar 1 waarde hoeft te dimmen (count.text) en niet A en B
Hoe wil je een property declaren?

[ Voor 44% gewijzigd door gorgi_19 op 18-08-2003 17:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
ok, moet ik die Convert.ToInt32 of Convert.ToDouble dan bovenaan de code typen?

(dus:

Dim a As Integer
Dim b As Integer

Convert.ToInt32 / Convert.ToDouble

a = txt1.Text
b = txt2.Text

count.Text = a + b

of moet ik dat op een andere manier invoeren?

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 20-08 09:45

Armageddon_2k

Trotse eigenaar: Yamaha R6

Ow btw. als je die punten tussen de 1000 wil hebben dan kan je bij de textbox:
Dataformat ---- Number ---- Use 1000 separator
(sorry had dat ff niet gelezen)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Je zou allicht eens kunnen kijken WAT die functies doen.
En of je een integer, double, int64, decimal of wat dan ook nodig hebt, is afhankelijk van de data die je er in wilt stoppen. Gebroken getallen willen niet echt leuk in een integer passen.

Zelfde geldt dat gigantisch grote getallen niet blij zijn in een int16. Of een deling door 0; moet hier oneindig uitkomen of kan deze niet voorkomen?

[ Voor 106% gewijzigd door gorgi_19 op 18-08-2003 17:32 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
tja, de getallen zitten zowat op elke grootte, tussen de 20.000 en de 50.000.000. Daarboven kan in elk geval niks komen, en onder de 20.000 ook niet. Maar ik snap niet helemaal hoe ik die Convert... functie moet gebruiken, ik heb geprobeerd onderaan de code 'Convert.ToInt32(count)' te plaatsen (count is naam van de textbox), maar dat levert niks op, behalve dat de getallen nog steeds zonder . opgeteld worden.

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Dit ruikt naar huiswerk. Ik kan me niet aan de indruk ontrekken dat
1) ALS je een boek hebt en
2) ALS je daar een stukje in leest en
3) ALS je daarna een paar minuten nadenkt over wat je gelezen hebt
je zelf iets van het onderwerp snapt. Telkens roepen "maar nu werkt het script" terwijl je geen idee hebt waar je mee bezig bent (niet met een script in ieder geval) is niet goed. Vooral
Convert.ToInt32 / Convert.ToDouble
geeft aan dat je geen idee hebt waar je mee bezig bent

  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Dat boek heb ik vorige week voor het laatst gelezen... en daarnaast werk ik normaal ook niet met die convert-rommel.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Voorbeelden met Convert.ToInt32

Daarnaast; convert rommel? :? Conversie doe je normaliter niet aan? Option strict werk je zeker niet mee...

[ Voor 35% gewijzigd door gorgi_19 op 18-08-2003 17:47 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
en daarnaast werk ik normaal ook niet met die convert-rommel.
Stel dat we de "huiswerkopgave" iets ingewikkelder maken en je moet twee textboxen op elkaar delen. Jij hebt dan het idee dat textbox3.text=textbox1.text / textbox2.text voldoende is voor een goed programma. Wat gebeurt er nu als je 0 invult in textbox2, of nog leuker, wat gebeurt er als je nul invult in textbox2?

Het converteren van datatypen is 1 van de meest standaard handelingen die je ooit zult gebruiken. Als je dit nooit doet ben ik benieuwd wat je dan "normaal" doet in een programmeertaal.

  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Bedankt, ik heb nu denk ik de goede code gevonden:

Dim a As Integer

a = System.Convert.ToInt32(1)

... de rest...

Alleen nu wordt de tekst na de 1e . weggehaald, dus ipv. '9.000.000' zie ik nu '9'.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 mompelt iets over Regional Settings.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
Wat bedoel je precies?

Verwijderd

Jannis schreef op 18 August 2003 @ 17:51:
ik heb nu denk ik de goede code gevonden:
"Gevonden"...... probeer toch eens wat inzicht te krijgen in wat je aan het doen bent, toon wat intresse ipv opzoek te zijn naar de knip en plak code die werkt. Er zit een hele waardevolle berg informatie en documentatie bij het dotnet framework lees die gewoon eens voor de gein! wie weet steek je er wat van op.....

[ Voor 6% gewijzigd door Verwijderd op 18-08-2003 17:55 ]


  • Jannis
  • Registratie: Oktober 2001
  • Laatst online: 08-07 22:25
ik heb hier geen .NET Framwork documentatie, daarnaast is dit toch niet de goede code, denk ik, want als ik die 1 in een 3 veranderd komt er uit het antwoord '25'

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Jannis schreef op 18 augustus 2003 @ 17:56:
ik heb hier geen .NET Framwork documentatie
klik

Misschien een tip, niet kwaad bedoeld, maar ik krijg niet de indruk dat je echt bewust weet wat je aan het doen bent en maar wat aan rotzooit. Daarnaast mis je basale kennis van debuggen en nog een heel stuk basiskennis van VB.Net.

Neem de Quickstart een door van .Net, probeer wat simpele dingetjes uit en ga vooral veel lezen en uitproberen, want je haalt nu echt heel veel door elkaar.

[ Voor 53% gewijzigd door gorgi_19 op 18-08-2003 18:01 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Ongelofelijk wat hier gebeurt! Iedereen wil Jannis iets leren dat echt heel erg simpel is (maar wel essentieel), maar Jannis wil gewoon een stukje code "vinden" dat de goede uitkomst geeft. Over een half uur komt hier een voorbeeldje te staan dat hij in textbox1 25 heeft staan, in textbox2 975 en dat er in textbox3 dan 1.000 moet komen te staan. Als antwoord van Jannis dan dit
code:
1
2
3
a=textbox1.text
b=textbox2.text
textbox3.text="1.000"


Uit deze code
System.Convert.ToInt32(1)
en deze zin
daarnaast is dit toch niet de goede code, denk ik, want als ik die 1 in een 3 veranderd komt er uit het antwoord '25'
begrijp ik dat Jannis nog niet doorheeft wat een variabele is.

Ik stel voor dat iedereen die in dit topic heeft gereageerd Jannis 24 uur zelf laat rommelen en dat we hem daarna weer verder helpen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Het meeste is al gezegd, maar ik kan het toch niet laten.

Het is niet omdat iets 'werkt', dat het daarvoor al direct 'goed' te noemen is.
Met logisch denken, debuggen en eea lezen kom je al een heel stuk verder.
Als iemand je een hint/tip of wat dan ook geeft, en je hebt er nog nooit van gehoord, ga dan eens op zoek op internet , in een boek of in de documentatie WAT en HOE die functie doet en waartoe ze dient, en hoe je ze gebruikt, ipv zomaar in het wilde weg te gaan gokken en te gaan veronderstellen.

Ik denk dat je ondertussen al heel wat nuttige tips gekregen hebt, en dat je daar misschien eens eerst verder mee aan de slag moet.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.