Anoniem2 Geplaatst: 1 juni 2012 Delen Geplaatst: 1 juni 2012 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? Quote Link naar reactie
Anoniem2 Geplaatst: 1 juni 2012 Auteur Delen Geplaatst: 1 juni 2012 ik ben de basic zelf een beetje kwijt\r\n\r\nje hebt een getal in een getal$ deze heeft een lengte \r\n\r\nje krijgt de code voor uitlezen voor a= 1 to len getal$\r\nif mid$(getal$,a,1)>a of Quote Link naar reactie Anoniem2 Geplaatst: 1 juni 2012 Auteur Delen Geplaatst: 1 juni 2012 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. Quote Link naar reactie Anoniem2 Geplaatst: 2 juni 2012 Auteur Delen Geplaatst: 2 juni 2012 [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] Quote Link naar reactie Anoniem2 Geplaatst: 4 juni 2012 Auteur Delen Geplaatst: 4 juni 2012 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] Quote Link naar reactie Om een reactie te plaatsen, moet je eerst inloggen 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 Afbeeldingen invoegen vanaf URL × Desktop Tablet Smartphone Reactie toevoegen Volgers 0
Anoniem2 Geplaatst: 1 juni 2012 Auteur Delen Geplaatst: 1 juni 2012 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. Quote Link naar reactie
Anoniem2 Geplaatst: 2 juni 2012 Auteur Delen Geplaatst: 2 juni 2012 [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] Quote Link naar reactie
Anoniem2 Geplaatst: 4 juni 2012 Auteur Delen Geplaatst: 4 juni 2012 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] Quote Link naar reactie
Aanbevolen berichten
Populaire leden
Lampje
1Leden
Geen leden om te tonen