Prüfen ob Eingabe=Zahl ist/TextScrolling

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Hex²

Betreff: Prüfen ob Eingabe=Zahl ist/TextScrolling

BeitragDi, Apr 19, 2005 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schreibe grade eine Konsole und versuche schon seit gestern etwas zu regeln.

Der User kann z.B. "wireframe 1" eingeben. Ich überprüfe ob Zahl eine 1 oder 0 ist, denn etwas anderes soll eine Fehlermeldung erzeucgen. Das funktioniert auch, wenn er 3 eintippt kommt der Error. Wenn der User aber "wireframe hallo" eintippt, dann erkennt BB eine 0. Wie kann man denn prüfen ob die Eingabe eine Zahl ist oder nicht?

Gibt es da ein Befehl den ich übersehen habe? Oder (warscheinlich) wieder nur eine umständliche und umfangreiche Funktion die man schreiben muß Very Happy
  • Zuletzt bearbeitet von Hex² am Mi, Apr 20, 2005 22:42, insgesamt einmal bearbeitet

Hubsi

BeitragDi, Apr 19, 2005 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Relativ simpel:BlitzBasic: [AUSKLAPPEN]
If Asc(eingabe$)>=48 And Asc(eingabe$)<=57 Then ist es eine zahl zwischen 0 und 9
Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

simi

BeitragDi, Apr 19, 2005 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

ich würde das mit ql:instr lösen:
Code: [AUSKLAPPEN]

if instr("0123456789",Zahl$) = 0 then RuntimeError "Keine Zahl!"
 

Timo

BeitragDi, Apr 19, 2005 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
nur wenn die Zahl zweistellig ist, geht es damit nur noch schlecht...
 

Hex²

BeitragDi, Apr 19, 2005 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, das hilft mir schon weiter, im Moment habe ich nur die Zahlen 0-1, wenn noch mehr dazukommen, könnte ich ja die Zeichen einzeln abfragen, ich denke mal das wird ja nicht so langsam sein, daß es auffällt.
 

OJay

BeitragDi, Apr 19, 2005 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wärs mit:
Code: [AUSKLAPPEN]
If zahl$ = Int(zahl$) Then ...


Wink
 

Hex²

BeitragMi, Apr 20, 2005 0:21
Antworten mit Zitat
Benutzer-Profile anzeigen
OJay hat Folgendes geschrieben:
wie wärs mit:
Code: [AUSKLAPPEN]
If zahl$ = Int(zahl$) Then ...


Wink


Rofl, stimmt, darauf wär ich irgendwie nicht gekommen, obwohl es sooooo simpel und logisch ist, und jetzt wo ich es sehe ist es schon fast peinlich daß ich gefragt habe Very Happy

SpionAtom

BeitragMi, Apr 20, 2005 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei deinem Problem ist es doch nicht wichtig, ob es sich um eine Zahl handelt:

Code: [AUSKLAPPEN]

Select zahl$
   case "1": ;.......
   case "2": ;.......
   default: Print "Fehler"
End Select



reicht doch vollkommen. Razz

Denn solange du nicht mit diesen Werten rechnest, ist es eigentlich auch Unsinn sich die Sache zu verkomplizieren.
(Jetzt kommen bestimmt wieder einige und sagen Strings verbrauchen mehr Speicher...)
 

DarkMike

BeitragMi, Apr 20, 2005 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ne! end select brauchst nicht da default schon da is!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)

Freeman

BeitragMi, Apr 20, 2005 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
wie wäre es einfach nur die keycodes bzufragen welche gedrückt wurden,das wäre meines erchtens am einfachsten.
meine Meinung

FrEeMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

Hubsi

BeitragMi, Apr 20, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
DarkMike hat Folgendes geschrieben:
ne! end select brauchst nicht da default schon da is!
Wie meinen bitte? Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Hex²

BeitragMi, Apr 20, 2005 15:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann mir nicht helfen, aber "zahl$ = Int(zahl$)" finde ich irgendwie noch am besten.. kurz und schnell.. hab ich da jetzt einen Vorteil noch mit Select Case abzufragen? (außer ich will das der User nur bestimmte Zahlen eingibt)

Eigendlich nicht das Thema, aber ich habe nochmal eine andere Frage. In meiner Konsole kann man den Text scrollen, das habe ich im Moment mit Dims gelöst. Kann man das auch mit Types lösen? Ich weiß nicht ob und wie man dann abfragen kann in welcher Zeile man sich befindet, weil man bei Types doch keine ID hat so wie bei einem Array (zeile$(1) z.B.). Dims finde ich irgendwie so unfexiebel, weil ich halt immer voher bestimmen muß, wieviele Zeilen es maximal geben darf...

Hubsi

BeitragMi, Apr 20, 2005 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest mit Handle die id zwischenspeichern, dann mit Object zu dieser id wecheln und via After und Before scrollen. Arrays sind zwar einfacher zu handhaben, haben aber wie Du schon sagtest den Nachteil der festgelegten Größe.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Hex²

BeitragMi, Apr 20, 2005 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
Du könntest mit Handle die id zwischenspeichern, dann mit Object zu dieser id wecheln und via After und Before scrollen. Arrays sind zwar einfacher zu handhaben, haben aber wie Du schon sagtest den Nachteil der festgelegten Größe.


Das hab ich befürchtet, ich glaub ich muß mir das Arraytut nomma durchlesen, bin nämlich diesem Handleids immer aus dem Weg gegangen Razz

Danke erstmal.. wenn ichs gebacken bekomme das es läuft, werde ich Euch daran teilhaben lassen Very Happy

SpionAtom

BeitragMi, Apr 20, 2005 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das muss ich noch loswerden:

Das mit dem Select ist natürlich nur sinnvoll, wenn man die eingabe auf relativ viele Dinge hin vergleichen will. Bei einer schlichten 1/0 ja/nein abfrage, genügt natürlich schon ein IF..THEN..ELSE.


Und
@freeman
Keycodes abfragen bei einer Konsole?!? Question

Neeeeeeeee Exclamation

Triton

BeitragMi, Apr 20, 2005 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Passt besser in Anfänger-Forum. Auf keinen Fall aber in 2D.

Arrow
Coding: silizium-net.de | Portfolio: Triton.ch.vu
 

Hex²

BeitragMi, Apr 20, 2005 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Also irgendwie rall ich das mit dem bewegen im Array nicht so ganz.. naja jedenfalls nicht so wie ich es benötige:

BlitzBasic: [AUSKLAPPEN]

Type zeilen
Field message$
End Type

Global aktuelle_zeile, anzahl_zeilen, zeilen_anzeigen=10, position=0

For i = 1 To 30
c.Zeilen = New Zeilen
c\message$=\"eingabe \"+i
anzahl_zeilen=anzahl_zeilen+1
position=position+1
Next

c.Zeilen=Last Zeilen
aktuelle_zeile=Handle(c)


So, nun weiß ich das ich mich in Zeile 30 befinde und das "aktuelle Zeile" die ID des letzten Types beinhaltet. Um jetzt 10 Zeilen anzeigen zu lassen, muß ich sicherlich mit before die Zeile anzeigen und dann die aktuelle_zeile auf das neue Typehandle setzen, aber ich hab schon ein paar Varianten versucht. Egal wie ich es drehe, ich sehe immer Zeile 1 - 20 statt 20-30. Hat noch jemand ein Tip für mich ? *hundeblick mach* *fg*
 

DarkMike

BeitragMi, Apr 20, 2005 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:
DarkMike hat Folgendes geschrieben:
ne! end select brauchst nicht da default schon da is!
Wie meinen bitte? Mr. Green



??? wie meinen du bitte ???
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)

Hubsi

BeitragMi, Apr 20, 2005 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Select muss immer mit End Select abgeschlossen werden, da sonst der Compiler natürlich nicht weiß was zum Case bzw. Default alles dazugehört. Oder ich hab Dich völlig falsch verstanden Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

DarkMike

BeitragMi, Apr 20, 2005 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ne sry hab das irgendwie mit if verwechelt!
2 dinge sind unendlich die menschliche Dummheit und das Universum obwohl beim Universum bin ich mir nicht ganz sicher. (Albert Einstein)

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group