Visual Basic....

Hier gehört alles rein, was nichts mit dem Thema Spiele zu tun hat.

Moderatoren: Moderatoren, Redakteure

| Schwalbe |
Beiträge: 40
Registriert: 23.01.2010 16:06
Persönliche Nachricht:

Visual Basic....

Beitrag von | Schwalbe | »

Hey Leute,
ich hab mal ein kleines Anliegen, für die jenigen, die sich mit Visual Basic auskennen.
Folgender Sachverhalt:
Im Rahmen meines Studiums soll ich ein Programm mit Hilfe von Visual Basic programmieren. Das Thema des Programms ist ein Ticketverkauf mit begrenzter Anzahl an Karten^^

Nun zu meinem Problem:
Wie sicher ich die Eingabe der Personen so ab, dass keine Kommazahl verwendet werden darf. Also sprich Erwachsenenanzahl = 2 und nicht Erwachsenenanzahl = 2,2
Benutzeravatar
Naxlive
Beiträge: 408
Registriert: 11.10.2010 18:02
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von Naxlive »

Mir fallen da als Laie zwei Möglichkeiten ein:
Die Variable als integer definieren. Somit sollte es zum Error kommen, wenn da jemand etwas anderes eingibt.

Eine modulo-Operation:
Kartenzahl minus mod(Kartenzahl) = 0. Wenn hier etwas anderes wie 0 heraus kommt, wurde eine Kommazahl eingegeben. Dann kannst du eine entsprechende Fehlermeldung ausgeben.

Ich wette, das Problem lässt sich eleganter und schöner lösen. :)
Benutzeravatar
machbetmu
Beiträge: 848
Registriert: 10.12.2006 18:50
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von machbetmu »

Das einfachste ist vermutlich, es als Integer zu definieren, dann musst du allerdings den Fehler abfangen, sonst stürzt dein Programm ab. Kenne mich aber bei VB nicht mit Exceptions aus, bei Java würde das aber sehr einfach gehen, von daher denke ich dass VB das auch kann.

Ansonsten kannst du es mit Stringoperationen machen. Lies die Zahl als String ein, suche dann ob ein Komma oder ein Punkt darin ist, wenn ja gib eine Fehlermeldung aus. Wenn nein, ist es vermutlich eine ganze Zahl.
Bei der Methode berücksichtigst du aber nicht den Fall das jemand "zwanzig" eingibt, das heißt wenn das mit Exceptions nicht zu kompliziert ist, würde ich an deiner Stelle die erste Variante nehmen.
Benutzeravatar
machbetmu
Beiträge: 848
Registriert: 10.12.2006 18:50
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von machbetmu »

Nachtrag: Nachfrage bei meinem Mitbewohner ergab, dass die Variante mit Exceptions funktioniert, nur dass diese bei Visual Basic halt Errors heißen. Es gibt aber wohl auch Methoden, mit denen direkt überprüft werden kann ob es ein gültiger Wert für Integer ist. Du hast also wirklich vielfältige Möglichkeiten.
| Schwalbe |
Beiträge: 40
Registriert: 23.01.2010 16:06
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von | Schwalbe | »

Ich danke euch erstmal für eure schnelle Hilfe. Die Variablen hab ich alle bereits als Integer definiert, jedoch kommt es zum dem gleichen Ergebnis, dass ich die 2,2 immer noch eingeben kann :cry:
Kann auch sein das ich irgendein denk Fehler habe, am besten ich lad mal nen Scrrenshoot mit hoch^^

http://s7.directupload.net/images/131215/v92bp76j.jpg
http://s14.directupload.net/images/131215/fcaa35il.jpg
http://s1.directupload.net/images/131215/7pl3fa6e.jpg
Benutzeravatar
Eirulan
Beiträge: 13152
Registriert: 12.10.2009 10:46
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von Eirulan »

Ich würde das per Regex prüfen:

Public Function IsInteger(ByVal strNumber As String) As Boolean
Dim _RegexNotIntPattern As New System.Text.RegularExpressions.Regex("[^0-9-]")
Dim _RegexIntPattern As New System.Text.RegularExpressions.Regex("^-[0-9]+$|^[0-9]+$")
Return (Not _RegexNotIntPattern.IsMatch(strNumber) AndAlso _RegexIntPattern.IsMatch(strNumber))
End Function

Oder du sperrst Eingaben direkt beim Tastendruck:

Private Sub txtPhone_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPrefix.KeyPress, txtAreaCode.KeyPress, txtSuffix.KeyPress
If (e.KeyChar < "0" OrElse e.KeyChar > "9") And (e.KeyChar <> Microsoft.VisualBasic.ChrW(46)) Then
If (e.KeyChar <> Microsoft.VisualBasic.ChrW(8) AndAlso e.KeyChar <> "DEL") Then
e.Handled = True
End If
End If
End Sub
Benutzeravatar
Levi 
Beiträge: 44988
Registriert: 18.03.2009 15:38
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von Levi  »

http://stackoverflow.com/questions/1341 ... sual-basic

Code: Alles auswählen

Dim day As Integer
Dim valid As Boolean = Int32.TryParse(InputDan.Text, day)
http://msdn.microsoft.com/de-de/library ... -snippet-1


(ich finde es erschreckend, wie wenig bei mir von VB hängen geblieben ist XD)


@Tastendrucksperre über mir: irgend nen Hirni kommt eh auf die Idee mit Copy&Paste mal zu arbeiten :twisted:
Benutzeravatar
Eirulan
Beiträge: 13152
Registriert: 12.10.2009 10:46
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von Eirulan »

TryParse ist ne gute Idee ;)

@Levi:
Dann fängt man halt Ctrl-V auch noch ab und das Kontextmenü lässt sich ja auch abstellen...
;)
| Schwalbe |
Beiträge: 40
Registriert: 23.01.2010 16:06
Persönliche Nachricht:

Re: Visual Basic....

Beitrag von | Schwalbe | »

na dann werd ich das mal versuchen^^ ich dankke euch ;)