• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Visual Basic Problemchen in der Informatikarbeit (nur numerische Eingabe zugelassen)

H

Harlekin

Gast
Servus jungs, ;-)

wir haben heute eine Informatikarbeit geschrieben.
Ein Teil der Aufgabe bestand darin, dass wir die Eingabe der Textfelder gegen eine nicht numerische Eingabe schützen sollten.
Soweit so gut. Der Befehl lautet ja:
If Not IsNumeric (txtEingabeWert1.Text) then txtEingabeWert1 = ""

Oder so ^^



Naja, das Problem was ich z.T. leider erst nach der Arbeit festgestellt hab:
Nun kann ich aber auch keinen "Punkt" mehr eintragen, da dieser bekanntlich ja keine Zahl ist ;-)
Bsp:
Die Zahl 0.85 kann man dann nicht in das Textfeld eingeben.

Nun meine eigentlich Frage:
Wie macht man es, dass man zwar einen "Punkt" in das Textfeld eintragen kann, aber nicht den Rest (bis halt auf die Zahlen).

Ich bin mir nämlich ziemlich sicher das wir das noch nicht hatten.


mfg Harlekin
 
Harlekin am 21.12.2004 15:45 schrieb:
Servus jungs, ;-)

wir haben heute eine Informatikarbeit geschrieben.
Ein Teil der Aufgabe bestand darin, dass wir die Eingabe der Textfelder gegen eine nicht numerische Eingabe schützen sollten.
Soweit so gut. Der Befehl lautet ja:
If Not IsNumeric (txtEingabeWert1.Text) then txtEingabeWert1 = ""

Oder so ^^



Naja, das Problem was ich z.T. leider erst nach der Arbeit festgestellt hab:
Nun kann ich aber auch keinen "Punkt" mehr eintragen, da dieser bekanntlich ja keine Zahl ist ;-)
Bsp:
Die Zahl 0.85 kann man dann nicht in das Textfeld eingeben.

Nun meine eigentlich Frage:
Wie macht man es, dass man zwar einen "Punkt" in das Textfeld eintragen kann, aber nicht den Rest (bis halt auf die Zahlen).

Ich bin mir nämlich ziemlich sicher das wir das noch nicht hatten.


mfg Harlekin

Was sollen wir wetten dass 0.85 eingegeben werden kann und das "isNumeric" dann auch "true" zurückliefert ?
Oder sollte jede Stelle der Zahl in ein eigenes Textfeld? Kann ich mir nicht vorstellen.

gruß,

edit:
siehe auch hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctisnumeric.asp
Wer btw. arbeitet heute noch mit Basic? :confused:
 
Harlekin am 21.12.2004 15:45 schrieb:
Servus jungs, ;-)

wir haben heute eine Informatikarbeit geschrieben.
Ein Teil der Aufgabe bestand darin, dass wir die Eingabe der Textfelder gegen eine nicht numerische Eingabe schützen sollten.
Soweit so gut. Der Befehl lautet ja:
If Not IsNumeric (txtEingabeWert1.Text) then txtEingabeWert1 = ""

Oder so ^^



Naja, das Problem was ich z.T. leider erst nach der Arbeit festgestellt hab:
Nun kann ich aber auch keinen "Punkt" mehr eintragen, da dieser bekanntlich ja keine Zahl ist ;-)
Bsp:
Die Zahl 0.85 kann man dann nicht in das Textfeld eingeben.

Nun meine eigentlich Frage:
Wie macht man es, dass man zwar einen "Punkt" in das Textfeld eintragen kann, aber nicht den Rest (bis halt auf die Zahlen).

Ich bin mir nämlich ziemlich sicher das wir das noch nicht hatten.


mfg Harlekin

Kenn mich mit VB nicht aus, aber wie wärs so in dem Sinne:

If NOT [1,2,3,4,5,6,7,8,9,0,.] (txtEingabeWert1.Text)

Den Syntax von so einer Auswahl kenn ich nicht, aber den müßtest Du doch kennen.
 
Herr-Sengele am 21.12.2004 15:49 schrieb:
Was sollen wir wetten dass 0.85 eingegeben werden kann und das "isNumeric" dann auch "true" zurückliefert ?
Oder sollte jede Stelle der Zahl in ein eigenes Textfeld? Kann ich mir nicht vorstellen.

gruß,
Soweit ich mich erinnern kann, wollte das Textfeld den Punkt nicht annehmen.
Kann auch sein, das ich dafür nicht genug zeit hatte.


Naja unsre Schule arbeitet noch mit Visual Basic
5
:-S


Edit: Ich teste das jetzt mal ausgiebiger :-]


Edit²: Jetzt weiß ich woran es lag *grumel*
Der nimmt dann den Punkt nicht an wenn ich anstatt "0.8" nur ".8" schreiben will
Ich doof :-S
mist! Das kommt davon wenn man die Optionsbuttons nicht auf die Algemeinprozdeur verweist, und sich dann wundert warum der Text nicht in den Labels angezeigt wird und daran gute 30Minuten sitzt (Um nochmal dick aufzutragen :finger: ) ;-)
 
Herr-Sengele am 21.12.2004 15:49 schrieb:
Harlekin am 21.12.2004 15:45 schrieb:
Servus jungs, ;-)

wir haben heute eine Informatikarbeit geschrieben.
Ein Teil der Aufgabe bestand darin, dass wir die Eingabe der Textfelder gegen eine nicht numerische Eingabe schützen sollten.
Soweit so gut. Der Befehl lautet ja:
If Not IsNumeric (txtEingabeWert1.Text) then txtEingabeWert1 = ""

Oder so ^^



Naja, das Problem was ich z.T. leider erst nach der Arbeit festgestellt hab:
Nun kann ich aber auch keinen "Punkt" mehr eintragen, da dieser bekanntlich ja keine Zahl ist ;-)
Bsp:
Die Zahl 0.85 kann man dann nicht in das Textfeld eingeben.

Nun meine eigentlich Frage:
Wie macht man es, dass man zwar einen "Punkt" in das Textfeld eintragen kann, aber nicht den Rest (bis halt auf die Zahlen).

Ich bin mir nämlich ziemlich sicher das wir das noch nicht hatten.


mfg Harlekin

Was sollen wir wetten dass 0.85 eingegeben werden kann und das "isNumeric" dann auch "true" zurückliefert ?
Oder sollte jede Stelle der Zahl in ein eigenes Textfeld? Kann ich mir nicht vorstellen.

gruß,

edit:
siehe auch hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctisnumeric.asp
Wer btw. arbeitet heute noch mit Basic? :confused:


Viele. Und in Zukunft werden's noch mehr!

Z.B. werden ASP.NET seiten nicht selten mit VB geschrieben. Außerdem ist es eine einfache und effektive Sprache, wenn man damit Makros für Office schreiben will. ;)
 
RuedigerHoffmann am 21.12.2004 16:20 schrieb:
Herr-Sengele am 21.12.2004 15:49 schrieb:
Harlekin am 21.12.2004 15:45 schrieb:
Servus jungs, ;-)

wir haben heute eine Informatikarbeit geschrieben.
Ein Teil der Aufgabe bestand darin, dass wir die Eingabe der Textfelder gegen eine nicht numerische Eingabe schützen sollten.
Soweit so gut. Der Befehl lautet ja:
If Not IsNumeric (txtEingabeWert1.Text) then txtEingabeWert1 = ""

Oder so ^^



Naja, das Problem was ich z.T. leider erst nach der Arbeit festgestellt hab:
Nun kann ich aber auch keinen "Punkt" mehr eintragen, da dieser bekanntlich ja keine Zahl ist ;-)
Bsp:
Die Zahl 0.85 kann man dann nicht in das Textfeld eingeben.

Nun meine eigentlich Frage:
Wie macht man es, dass man zwar einen "Punkt" in das Textfeld eintragen kann, aber nicht den Rest (bis halt auf die Zahlen).

Ich bin mir nämlich ziemlich sicher das wir das noch nicht hatten.


mfg Harlekin

Was sollen wir wetten dass 0.85 eingegeben werden kann und das "isNumeric" dann auch "true" zurückliefert ?
Oder sollte jede Stelle der Zahl in ein eigenes Textfeld? Kann ich mir nicht vorstellen.

gruß,

edit:
siehe auch hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctisnumeric.asp
Wer btw. arbeitet heute noch mit Basic? :confused:


Viele. Und in Zukunft werden's noch mehr!

Z.B. werden ASP.NET seiten nicht selten mit VB geschrieben. Außerdem ist es eine einfache und effektive Sprache, wenn man damit Makros für Office schreiben will. ;)

Wenn man ganz sicher gehen will und nur bestimmte Sachen zulassen möchte, sollte man immer reguläre Ausdrücke (Regular Expressions / RegEx) verwenden. Das sind Suchstrings, die dann True oder False zurückgeben.

Du hättest natürlich auch (wenn Du z.b. ein Komma zulassen willst) erst den String bei allen Kommas splitten können und dann jeden Inhalt des Arrays auf isNumeric prüfen können ... oder so :)
 
mastasky am 21.12.2004 16:26 schrieb:
Wenn man ganz sicher gehen will und nur bestimmte Sachen zulassen möchte, sollte man immer reguläre Ausdrücke (Regular Expressions / RegEx) verwenden. Das sind Suchstrings, die dann True oder False zurückgeben.

Du hättest natürlich auch (wenn Du z.b. ein Komma zulassen willst) erst den String bei allen Kommas splitten können und dann jeden Inhalt des Arrays auf isNumeric prüfen können ... oder so :)
Übertreibs mal net :finger:
Ich hab grad nen halbes Jahr VB
Und nen Komma ist afaik net so gut, da VB bei rechnungen damit nicht zurecht kommt.
Dann hätte man das mit dem ascii 44 in 46 oder so machen können
 
Harlekin am 21.12.2004 18:29 schrieb:
mastasky am 21.12.2004 16:26 schrieb:
Wenn man ganz sicher gehen will und nur bestimmte Sachen zulassen möchte, sollte man immer reguläre Ausdrücke (Regular Expressions / RegEx) verwenden. Das sind Suchstrings, die dann True oder False zurückgeben.

Du hättest natürlich auch (wenn Du z.b. ein Komma zulassen willst) erst den String bei allen Kommas splitten können und dann jeden Inhalt des Arrays auf isNumeric prüfen können ... oder so :)
Übertreibs mal net :finger:
Ich hab grad nen halbes Jahr VB
Und nen Komma ist afaik net so gut, da VB bei rechnungen damit nicht zurecht kommt.
Dann hätte man das mit dem ascii 44 in 46 oder so machen können

Servus.

ich habe auch mal klein angefangen.
ich emphele die das Ereignis "KeyPress" zu benutzen.
code sieht ungefähr so aus:

Private Sub txtZahl1_Keypress(Keyascii as Integer)

select case keyascii
case (Ascii code eintragen für sachen die erlaubt sind)
'Do nothing
case else
keyascii = 0
end sub

in der dokomentation also der hilfe findest du unter index ein textfeld.
dort gibt du ascii ein. da ist ein paar zeilen weiter eine tabelle mit den codes.

viel spass :-D :-D :-D
 
ganz dumme frage, aber kann man nicht unter eigenschaften des textfeldes den wert "only numeric" auf "true" setzen? sowas gibts jedenfalls bei delphi ab version 0 :-D ( oder 1 :-S )

da erspart man sich doch das abfragen einzelner tasten und anschließende auswertung. falls es nicht gehen sollte: sorry, kenn mich nur ein wenig mit delphi aus.
 
Rabowke am 23.12.2004 08:14 schrieb:
ganz dumme frage, aber kann man nicht unter eigenschaften des textfeldes den wert "only numeric" auf "true" setzen? sowas gibts jedenfalls bei delphi ab version 0 :-D ( oder 1 :-S )

da erspart man sich doch das abfragen einzelner tasten und anschließende auswertung. falls es nicht gehen sollte: sorry, kenn mich nur ein wenig mit delphi aus.

Ich habe lange mit VB6 programmiert, bin umgestuegen auf VB .NET und C# .NET.
Ich hatt dich auf diese eigenschaft verwiesen wenn es diese geben würde. Ich kann es nicht ändern. So sind die Regeln von Microsoft. Was Bill Gates nicht will, dass bekommst du nicht.
:-]
 
Zurück