Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mr.Schrotti
Anmeldungsdatum: 05.12.2007 Beiträge: 13
|
Verfasst am: 07.04.2008, 08:38 Titel: eingabe beschränken |
|
|
Hi,
ich muss irgendwie die eingabe länge im eingabe feld beschränken z.B. das man nur 10 Zeichen eintippen kann. Geht das irgendwie??
Gruß Mr.Schrotti |
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 07.04.2008, 08:50 Titel: |
|
|
Da gibts 2 Möglichkeiten:
Du kannst ganz normal mit Input arbeiten und dann mit left$
die Länge beschränken.
Oder du programmierst die Input Funktion selber mit INKEY$
MfG |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
|
Nach oben |
|
 |
Mr.Schrotti
Anmeldungsdatum: 05.12.2007 Beiträge: 13
|
Verfasst am: 07.04.2008, 16:11 Titel: |
|
|
Ohmann wieso muss Qbasic bloß so schwirig sein
Gibts sonst möglichkeiten um einen Überlauf zu verhindern bei Qbasic? Das vorraussetzung für unser Taschenrechner Projekt für die schule.
Gruß Mr.Schrotti
ps. wie geht das mit left$ ?? |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 07.04.2008, 17:53 Titel: |
|
|
Code: |
input t$
t$=left$(t$,10)
print t$
sleep
|
Die Länge wird allerdings erst nachträglich korrigiert.
MfG
/edit
so gehts vielleicht auch:
do
input t$
loop until len(t$) <=10 |
|
Nach oben |
|
 |
Random
Anmeldungsdatum: 09.03.2006 Beiträge: 47
|
Verfasst am: 07.04.2008, 19:28 Titel: |
|
|
Also ich würde das mit inkey$ und einer Schleife machen.  |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 07.04.2008, 20:34 Titel: |
|
|
@Random:
Siehe QBMonsterFAQ. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
wolfjuli
Anmeldungsdatum: 06.03.2008 Beiträge: 50
|
Verfasst am: 08.04.2008, 07:37 Titel: |
|
|
@Heizi:
Ich denke dein Vorschlag im Edit-Beriech wird nicht laufen, da der Befehl "input" erst dann beendet ist, wenn man die eingabetaste drückt. _________________ Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. |
|
Nach oben |
|
 |
Random
Anmeldungsdatum: 09.03.2006 Beiträge: 47
|
Verfasst am: 08.04.2008, 08:36 Titel: |
|
|
Mao, meine Methode ist zwar vielleicht nicht ganz so professionell, doch ist sie sehr simpel und funktioniert auch. Was soll ich da also noch den Doktor machen; es muss doch nicht immer kompliziert sein, sondern auch für Anfänger verständlich. Was bingt ihm ein Code, wenn er gar nicht weiss wie er funktioniert.
Code: |
do
sleep
print inkey$;
if n=9 then exit do
n=n+1
loop
|
|
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 08.04.2008, 10:26 Titel: |
|
|
Deine Routine hört aber nach exakt 10 Zeichen auf, weniger Zeichen beenden die Routine nicht. (Naja feht halt die Enter-abfrage( CHR$(13) )
Wenn man exakt eine gewisse Anzahl Zeichen braucht, so gibt es dafür einen Befehl glaub ich. Such mal nach INPUT$(x):
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Heizi

Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 08.04.2008, 11:30 Titel: |
|
|
Zitat: |
dim n as integer
dim t as string
dim eingabe as string*10
n=0
eingabe=""
do
sleep
t=inkey$
if n=9 or t=chr$(13) then exit do
print t;
eingabe=eingabe+t
n=n+1
loop
print ""
Print eingabe
|
ich habdas mal auf die Schnelle modifiziert.
Das ganze ist von einem sinnvollen Eingabemaske allerdings noch weit entfernt. Kannst ja noch versuchen das mit dem Backspace einzubauen...
Hmm mir fällt der asc Wert grad net ein
MfG |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.04.2008, 17:06 Titel: |
|
|
chr(8 )... in der qb-city gab's dazu mal ne schöne aufgabe, da findet ihr auch meine routine... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 09.04.2008, 15:39 Titel: |
|
|
@Random:
Hab ich nie behauptet, und ich bin auch dafür, dass man nur Routinen benutzen sollte, die man versteht und auch selbst schreiben kann. (Bibliotheken für komplexere Dinge mal ausgenommen.)
Nur war deins eben genau der dort auch genutzte Weg. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
Mr.Schrotti
Anmeldungsdatum: 05.12.2007 Beiträge: 13
|
Verfasst am: 13.04.2008, 16:37 Titel: |
|
|
danke schonmal für die Zahlreichen antworten habs jez noch nicht eingebaut aber hat sonst noch jemand verbesserungsvorschläge für mein Programm? Soll ein einfacher Taschenrechner sein
Code: |
REM Rechner Markus Steckel und Tobias Friede
REM rech0001.bas 21-01-08
start:
CLS
LOCATE 4, 20
PRINT " **************************************"
LOCATE 5, 20
PRINT " +Rechnen fr Deppen+"
LOCATE 6, 20
PRINT " **************************************"
SLEEP 3
menue:
CLS
LOCATE 5, 20
PRINT "Waehle deine Rechenart aus"
LOCATE 7, 20
PRINT "Rechnen (1)"
LOCATE 8, 20
PRINT "Sinus (2)"
LOCATE 9, 20
PRINT "Wurzeln (3)"
LOCATE 14, 20
PRINT "Beenden (6)"
LOCATE 16, 20
PRINT "mit ENTER best„tigen"
LOCATE 16, 40
INPUT a
IF a = 1 THEN
GOSUB rechnen
ELSEIF a = 2 THEN
GOSUB SINUS
ELSEIF a = 3 THEN
GOSUB wurzeln
ELSEIF a = 6 THEN
END IF
END
rechnen:
CLS
LOCATE 5, 20
PRINT "Zahl eingeben "
LOCATE 6, 40
INPUT b
LOCATE 7, 20
PRINT "2. Zahl eingeben"
LOCATE 8, 40
INPUT C
LOCATE 10, 20
INPUT "Rechenzeichen eingeben:", rz$
IF rz$ = "+" THEN
d = b + C
ELSEIF rz$ = "-" THEN
d = b - C
ELSEIF rz$ = "*" THEN
d = b * C
ELSEIF rz$ = "/" THEN
d = b / b
ELSE
LOCATE 16, 20
PRINT "Das ist KEIN Rechenzeichen"
SLEEP
RETURN
END IF
LOCATE 10, 20
PRINT "Dein Ergebnis"; b; rz$; C; "="; d
LOCATE 12, 20
PRINT "M”chtest du zurck zu dem Men"
LOCATE 13, 20
PRINT "oder das Programm beenden ???"
LOCATE 14, 20
PRINT " (1) Zurck zum Men"
LOCATE 15, 20
PRINT " (2) Beenden"
LOCATE 16, 20
INPUT e
IF e = 1 THEN
GOTO menue
END IF
IF e = 2 THEN
END IF
END
SINUS:
CLS
SCREEN 12
pi = 3.141593
INPUT "Amplitude "; amplitude
INPUT "Frequenz "; frequenz
LINE (0, 0)-(0, 479), 15
LINE (0, 240)-(639, 240), 15
FOR xpixel = 0 TO 639 STEP .1
winkel = 2 * pi * xpixel / 639
y = amplitude * SIN(winkel * frequenz)
ypixel = y * -24 + 240
PSET (xpixel, ypixel), 12
NEXT
PRINT "Enter um zum Men zurck zu kommen."
SLEEP
GOTO menue
END
wurzeln:
CLS
LOCATE 10, 20
INPUT "Zahl eingeben"; a
LOCATE 12, 20
PRINT "Die Wurzel ist:"; SQR(a)
LOCATE 14, 20
PRINT "M”chtest du zurck zu dem Men"
LOCATE 15, 20
PRINT "oder das Programm beenden ???"
LOCATE 16, 20
PRINT " (1) Zurck zum Men"
LOCATE 17, 20
PRINT " (2) Beenden"
LOCATE 18, 20
INPUT e
IF e = 1 THEN
GOTO menue
END IF
IF e = 2 THEN
END
END IF
ende:
END
[quote][/quote] |
|
|
Nach oben |
|
 |
|