Ga naar inhoud

Controleren of er letters in getal zitten VB


Aanbevolen berichten

Hallo forumleden,\r\n\r\nVoor mijn PO Informatica ben ik bezig aan een programmaatje in Visual Basic 2008, die ervoor zorgt dat je decimaal naar binair, en andersom kunt omrekenen. Ook moet het programma controleren of er letters in het getal zitten. Daarvoor heb ik deze code:\r\n\r\n Private Sub ErStaatEenGetal()\r\n \'Waarde toekennen aan variabele\r\n OmTeRekenenGetal = Int(TxtInvoerGetal.Text)\r\n \'Staan er letters in het getal?\r\n Do\r\n If IsNumeric(Mid(OmTeRekenenGetal, iLettersInGetal, 1)) = True Then\r\n iLettersInGetal = iLettersInGetal + 1\r\n Else\r\n Call LetterInGetal()\r\n Exit Sub\r\n End If\r\n Loop Until (iLettersInGetal = 9)\r\n\r\n Call GeenLetters()\r\n End Sub\r\n Private Sub LetterInGetal()\r\n MessageBox.Show(\"Er zit een letter in het getal. Verwijder de letter en probeer het opnieuw.\", \"Error\")\r\n End Sub\r\n\r\nDe hele code staat op [url]http://pastebin.com/DTM1DpN5[/url]\r\nKan iemand mij helpen?
Link naar reactie
Wat is je probleem?\n\nOverigens in regel 3 cast je naar integer, om vervolgens in regel 6 te kijken of er eventueel een letter in die integer staat. Dat is een beetje zinloos, want integers zijn altijd getallen.\n\nVerder zie ik het nut van die loop niet. Je kunt IsNumeric() loslaten op een hele string. Als die string om te rekenen is tot een getal (bijvoorbeeld door naar een integer te casten), dan is de teruggegeven waarde TRUE. Is het niet om te rekenen tot een getal, dan krijg je FALSE.\n\nJe bent dus eigenlijk veel ingewikkelder bezig dan nodig is.
Link naar reactie
[QUOTE=Gamer1120;614328] Ook moet het programma controleren of er letters in het getal zitten. [/QUOTE]\r\nStel, je hebt een Textbox1 waarin het getal getikt moet worden.\r\nDan zou je de volgende code kunnen gebruiken:\r\n\r\n[CODE] Private Sub Textbox1_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress\r\n \r\n Dim strNumbers As String = \"0123456789\"\r\n If Not Asc(e.KeyChar.ToString) = 13 Then\r\n If InStr(strNumbers, e.KeyChar.ToString) = 0 Then \r\n e.Handled = True\r\n end if\r\n end if \r\nend sub\r\n[/CODE]\r\nHet voordeel is dat je dan verder geen code hoeft te schrijven voor het aangeven dat er een foutieve invoer is.\r\nMet de opdracht e.Handled=True zeg je in principe tegen VB dat er niets meer hoeft te gebeuren met de ingetoetste waarde indien het geen cijfer is.\r\n\r\nIk heb je code trouwens even beken, en ik kan je zeggen dat het heel wat eenvoudiger kan.\r\nIk zal je een voorbeeld geven.\r\n\r\nStel, je hebt een Form met een textbox1 en een button1. en je wilt van integer naar Binair, dan is dit (op het checken van de goede invoer na, maar die code staat hierboven) de enige code die je nodig hebt\r\n[CODE]Public Class Form1\r\n Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click\r\n Dim Dec As Integer = Val(TextBox1.Text)\r\n Dim Bin As String = Convert.ToString(Dec, 2)\r\n TextBox1.Text = Bin\r\n End Sub\r\nEnd Class[/CODE]
Link naar reactie
Ik heb nog een ander probleempje, het andere is inmiddels verholpen, waarvoor veel dank.\r\n\r\nDit is mijn code.\r\n Private Sub BNDGoedGetal()\r\n \'Het omrekenproces\r\n bingetal1 = Int(Mid(OmTeRekenenGetal, 1))\r\n bingetal2 = Int(Mid(OmTeRekenenGetal, 2))\r\n bingetal3 = Int(Mid(OmTeRekenenGetal, 3))\r\n bingetal4 = Int(Mid(OmTeRekenenGetal, 4))\r\n bingetal5 = Int(Mid(OmTeRekenenGetal, 5))\r\n bingetal6 = Int(Mid(OmTeRekenenGetal, 6))\r\n bingetal7 = Int(Mid(OmTeRekenenGetal, 7))\r\n bingetal8 = Int(Mid(OmTeRekenenGetal, 8))\r\n bingetal9 = Int(Mid(OmTeRekenenGetal, 9))\r\n If bingetal9 = 1 Then\r\n uitkomst = uitkomst + 1\r\n End If\r\n If bingetal8 = 1 Then\r\n uitkomst = uitkomst + 2\r\n End If\r\n If bingetal7 = 1 Then\r\n uitkomst = uitkomst + 4\r\n End If\r\n If bingetal6 = 1 Then\r\n uitkomst = uitkomst + 8\r\n End If\r\n If bingetal5 = 1 Then\r\n uitkomst = uitkomst + 16\r\n End If\r\n If bingetal4 = 1 Then\r\n uitkomst = uitkomst + 32\r\n End If\r\n If bingetal3 = 1 Then\r\n uitkomst = uitkomst + 64\r\n End If\r\n If bingetal2 = 1 Then\r\n uitkomst = uitkomst + 128\r\n End If\r\n If bingetal1 = 1 Then\r\n uitkomst = uitkomst + 256\r\n End If\r\n TxtUitvoerGetal.Text = uitkomst\r\n End Sub\r\nHij wil hem niet pakken. Ik krijg een getal tussen 1 en 5 o.i.d. eruit. Gehele code (verbeterd) is te vinden op [url]http://pastebin.com/zeZu9CtV[/url]\r\n\r\nMijn interface vind je op [url]http://imgur.com/lP52G[/url]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...