TheGatherer Skrevet 7. mars 2008 Skrevet 7. mars 2008 (endret) Jeg driver å lager en AutoClicker nå. Den er nesten helt ferdig. Problemet ligger ved textboxen. Alt funker helt fint viss man skriver et tall i textboxen. Er det ikke et tall i textboxen når man starter den så klikker hele programmet og jeg må avslutte. Jeg har prøvd å få til en melding som "Skriv inn et tall" men får det ikke helt til. Noen som vet hvordan jeg kan løse dette? Endret 9. mars 2008 av TheGatherer
Gjest Skrevet 8. mars 2008 Skrevet 8. mars 2008 Jeg driver å lager en AutoClicker nå. Den er nesten helt ferdig. Problemet ligger ved textboxen.Alt funker helt fint viss man skriver et tall i textboxen. Er det ikke et tall i textboxen når man starter den så klikker hele programmet og jeg må avslutte. Jeg har prøvd å få til en melding som "Skriv inn et tall" men får det ikke helt til. Noen som vet hvordan jeg kan løse dette? du kan jo prøve med IF kommandoen ? du har jo ikke postet noe kode så kan ikke hjelpe deg godt nokk, men prøv med IF kommandoen i en form, post koden til knappen så kan jeg sikkert hjelpe deg litt mer
aadnk Skrevet 8. mars 2008 Skrevet 8. mars 2008 (endret) Når en simpel feil er nok til å bringe ned hele programmet, antar jeg at du anvender VB6. Gi lyd om dette ikke er tilfellet. I alle fall må du håndtere feilaktig inndata på et vis - enten ved å forhindre inntastingen direkte (muligens det beste alternativet), eller avbryte videre kjøring uten å avslutte programmet fullstendig. Førstnevnte kan du eksempelvis oppnå ved å sette Cancel-parameteret i KeyDown-hendelsen til True når KeyCode faller utenfor vbKey0 og vbKey9, men her risikerer en at brukeren kan introdusere farlig innhold via utklippstavlen. En noe bedre fremgangsmåte er å bruke Val()-funksjonen i TextChange-hendelsen: Private Sub Text1_Change() ' Lagrer vi ikke markørposisjonen, tilbakestilles denne ' hver gang brukeren taster inn et tall i tekstboksen (svært forstyrrende) Dim savedStart As Long With Text1 savedStart = .SelStart .Text = Val(.Text) .SelStart = savedStart End With End Sub Er man riktig så sofistikert, kan man også benytte API-funksjoner til å forandre konfigurasjonsbiter i den underliggende Windows-kontrollen (egenskaper som ikke er implementert i VB-kontrollgrensesnittet): http://allapi.mentalis.org/apilist/2D6E0D8...1B6CC98D14.html Mener du imidlertid at det er bedre å avbryte programmet med en feilmelding, kan du også benytte IsNumeric(): Private Sub Command1_Click() ' Forsikre oss om at inndata er gyldig If IsNumeric(Text1.Text) Then ' Din kode her Else MsgBox "Skriv inn et tall", vbCritical, "Feil" End If End Sub Jeg vil også anbefale at du tar en titt på den mer generelle feilhåndteringsmetode i VB6 (On Error GoTo [label]). Det er svært dårlig brukervennlighet å avslutte programmet når hver minste feil inntreffer - i det minste bør du la brukeren fortsette eksekveringen, og (om du er seriøs) helst tilby en form for tilbakemelding (på eksempelvis epost) slik at du kan utbedre feilen til neste versjon. Det finnes et par middleware-programmer for dette formål (VBWatch, HuntERR), og det er heller ikke umulig å implementere denne funksjonaliteten selv. Endret 8. mars 2008 av aadnk
TheGatherer Skrevet 8. mars 2008 Forfatter Skrevet 8. mars 2008 (endret) Jeg driver å lager en AutoClicker nå. Den er nesten helt ferdig. Problemet ligger ved textboxen.Alt funker helt fint viss man skriver et tall i textboxen. Er det ikke et tall i textboxen når man starter den så klikker hele programmet og jeg må avslutte. Jeg har prøvd å få til en melding som "Skriv inn et tall" men får det ikke helt til. Noen som vet hvordan jeg kan løse dette? du kan jo prøve med IF kommandoen ? du har jo ikke postet noe kode så kan ikke hjelpe deg godt nokk, men prøv med IF kommandoen i en form, post koden til knappen så kan jeg sikkert hjelpe deg litt mer Viss ingenting er skrevet i 'Textbox1.text' Vill jeg at det skal komme opp "Skriv inn et tall" Start knapp koden: Timer1.Interval = TextBox1.Text * 1000 textbox. Timer1.Enabled = True If textbox1.text is nothing then msgbox("Skriv inn et tall") første jeg tenkte men fungerte jo selvfølgelig ikke Vet ikke helt jeg.. Når en simpel feil er nok til å bringe ned hele programmet, antar jeg at du anvender VB6. Gi lyd om dette ikke er tilfellet. I alle fall må du håndtere feilaktig inndata på et vis - enten ved å forhindre inntastingen direkte (muligens det beste alternativet), eller avbryte videre kjøring uten å avslutte programmet fullstendig. Førstnevnte kan du eksempelvis oppnå ved å sette Cancel-parameteret i KeyDown-hendelsen til True når KeyCode faller utenfor vbKey0 og vbKey9, men her risikerer en at brukeren kan introdusere farlig innhold via utklippstavlen. En noe bedre fremgangsmåte er å bruke Val()-funksjonen i TextChange-hendelsen: Private Sub Text1_Change() ' Lagrer vi ikke markørposisjonen, tilbakestilles denne ' hver gang brukeren taster inn et tall i tekstboksen (svært forstyrrende) Dim savedStart As Long With Text1 savedStart = .SelStart .Text = Val(.Text) .SelStart = savedStart End With End Sub Er man riktig så sofistikert, kan man også benytte API-funksjoner til å forandre konfigurasjonsbiter i den underliggende Windows-kontrollen (egenskaper som ikke er implementert i VB-kontrollgrensesnittet): <a href="http://allapi.mentalis.org/apilist/2D6E0D8...1B6CC98D14.html" target="_blank">http://allapi.mentalis.org/apilist/2D6E0D8...1B6CC98D14.html</a> Mener du imidlertid at det er bedre å avbryte programmet med en feilmelding, kan du også benytte IsNumeric(): Private Sub Command1_Click() ' Forsikre oss om at inndata er gyldig If IsNumeric(Text1.Text) Then ' Din kode her Else MsgBox "Skriv inn et tall", vbCritical, "Feil" End If End Sub Jeg vil også anbefale at du tar en titt på den mer generelle feilhåndteringsmetode i VB6 (On Error GoTo [label]). Det er svært dårlig brukervennlighet å avslutte programmet når hver minste feil inntreffer - i det minste bør du la brukeren fortsette eksekveringen, og (om du er seriøs) helst tilby en form for tilbakemelding (på eksempelvis epost) slik at du kan utbedre feilen til neste versjon. Det finnes et par middleware-programmer for dette formål (VBWatch, HuntERR), og det er heller ikke umulig å implementere denne funksjonaliteten selv. Jeg bruker Visual Basic 2008 Express edition, Sry glemte å nevne det. Ser litt på kodene. Takk. Endret 8. mars 2008 av TheGatherer
TheGatherer Skrevet 8. mars 2008 Forfatter Skrevet 8. mars 2008 (endret) planen var en liten error, Trykke Ok og alt var som før. Endret 8. mars 2008 av TheGatherer
Gjest Skrevet 8. mars 2008 Skrevet 8. mars 2008 er ikke løsningen slik vis du ikke har tastet noe i textboksen: If textbox1.text = "" then msgbox("skriv in et tall i tekstboksen") elseif textbox1.text = (textbox1.text) then DIN KODE HER
TheGatherer Skrevet 8. mars 2008 Forfatter Skrevet 8. mars 2008 er ikke løsningen slik vis du ikke har tastet noe i textboksen: If textbox1.text = "" then msgbox("skriv in et tall i tekstboksen") elseif textbox1.text = (textbox1.text) then DIN KODE HER Den funker men må fortsatt stenge programmet. Vill gjerne at alt er som før når man trykke Ok på Erroren Fikk du det til da? Ikke enda. La meg etter jeg posta denne.
aadnk Skrevet 8. mars 2008 Skrevet 8. mars 2008 Det skulle da ikke være noe problem å tilpasse kodeeksemplene mine til VB2008. Ta bare en titt på følgende: Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged ' Lagrer vi ikke markørposisjonen, tilbakestilles denne ' hver gang brukeren taster inn et tall i tekstboksen (svært forstyrrende) Dim savedStart As Integer, savedLength As Integer With TextBox1 savedStart = .SelectionStart savedLength = .Text.Length .Text = System.Text.RegularExpressions.Regex.Replace(.Text, "\D+", "") '' Du kan også bruke denne metoden: '.Text = Val(.Text) '.SelectionStart = savedStart .SelectionStart = savedStart - savedLength + .Text.Length End With End Sub Samt: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' Forsikre oss om at inndata er gyldig If IsNumeric(TextBox1.Text) Then ' Din kode her Else MessageBox.Show("Skriv inn et tall", "Feil", MessageBoxButtons.OK, MessageBoxIcon.Error) End If End Sub
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå