Input maximale länge, brauche hilfe
Übersicht

MunchBetreff: Input maximale länge, brauche hilfe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi leute,
hab heute mal angefangen einwenig an anderen Quelltexten rum zu spielen und hab mich als erstes an die Input abfrage von iranie gemacht. Ich wollte mit max in die funktion eine Längen abfrage einbauen, aber irgendwie will es absolut nicht funktionieren. Kann mir einer zeigen und am besten erklären was ich falsch tgemacht hab? Also es soll verhindert werden, das die eingabe länger als 10 Zeichen ist. Bye Jan Code: [AUSKLAPPEN] ;Global Global mh Global gui_selinp Global maxz ;Grafik Optionen (Laden der bilder usw.) Graphics 1024,768,16,1 SetBuffer BackBuffer() ;Geladene Grafiken Global maus=LoadImage("gfx\maus.bmp") MaskImage maus, 255, 0, 255 ;--------------------------------------- Main1 -------------------------------------- ;Flip usw. Repeat Cls ;Flip ende ;--------------------------------------- Main2 -------------------------------------- ausgabe$=gui_Input(300,300,ausgabe$="Test",1,10) ;------------------------------------ Main2 Ende ------------------------------------ ;Mausoptionen Y=MouseY() X=MouseX() If KeyHit(1) Then FlushKeys mh = 0 If MouseHit(1) Then mh = 1 DrawImage maus, X, Y ;Mausoptionen ende ;Flip usw. Flip Until KeyHit(1) ;Solang Escape net gedrückt End ;Flip ende ;------------------------------------- Main1 ende -------------------------------- Function gui_input$(x,y,txt$,id,max) Color 255,255,255 Rect x-1,y-1,StringWidth(txt$)+15,StringHeight(txt)+2,0 If mh If RectsOverlap(x,y,StringWidth(txt)+16,StringHeight(txt),MouseX(),MouseY(),1,1) And gui_erra = 0 gui_selinp = id ElseIf gui_selinp = id gui_selinp = -1 EndIf EndIf If id=gui_selinp Then If max>maxz Then key=GetKey() maxz=maxz+1 If key>31 Then txt$=txt$+Chr(key) If KeyHit(82) Then txt$=txt$+"0" If KeyHit(79) Then txt$=txt$+"1" If KeyHit(80) Then txt$=txt$+"2" If KeyHit(81) Then txt$=txt$+"3" If KeyHit(75) Then txt$=txt$+"4" If KeyHit(76) Then txt$=txt$+"5" If KeyHit(77) Then txt$=txt$+"6" If KeyHit(71) Then txt$=txt$+"7" If KeyHit(72) Then txt$=txt$+"8" If KeyHit(73) Then txt$=txt$+"9" If KeyHit(181) Then txt$=Left(txt$,Len(txt$)-1):txt$=txt$+"/" If KeyHit(83) Then txt$=txt$+"," EndIf If KeyHit(14) And Len(txt$)>0 Then txt$=Left(txt$,Len(txt$)-1) If KeyHit(14) And maxz>0 Then maxz=maxz-1 Rect x+StringWidth(txt$)+4,y+11,5,1 EndIf Text x+3,y,txt$ Return txt$ End Function |
||
zocker2150 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Länge_der_Eingabe = LEN (sINPUT$)
Mit diesem Befehl bekommst du die Anzahl der Zeichen von sINPUT$. Überprüfe dann ob die Zahl > 10 ist. |
||
Munch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, hat wunderbar funktioniert.
nun gehen meine probleme weiter. Ich würde michs ehr darüber freuen wenn mir jemand helfen könnte bei folgendem problemen: 1) Ich hab eine schleife mit einer maus, die Escape Taste soll aus dem gesamten programm springen und aus dem Input feld. Doch meist geht nur eine sache. 2) Bei drücken der Enter taste soll er ein input feld weiterspringen, ausser die Variable ruck ist net 1. Dies funktioniert auch, nur leider nur bei den ersten beiden, ins dritte springt er nicht, obwohl ich nirgends ruck=1 angegeben hab. Ich hab irgendwie probleme mit den befehlen KeyHit() und Flushkeys, ich verstehe nicht ganz wie ich sie richtig einsetze, was sie bewirken ist klar, nur irgendwie stimmt das bei mir nie so richtig... Könnt mir dazu noch jemand ne genauere erklärung geben? Hier nun der code: Code: [AUSKLAPPEN] ;Global Global gui_mh Global gui_selinp ;Grafik Optionen Graphics 1024,768,16,1 SetBuffer BackBuffer() ;Geladene Grafiken Global maus=LoadImage("gfx\maus.bmp") MaskImage maus, 255, 0, 255 ;--------------------------------------- Main1 -------------------------------------- ;Flip usw. Repeat Cls ;Flip ende ;--------------------------------------- Main2 -------------------------------------- ausgabe1$=gui_input(300,300,ausgabe1$,1,10,0) ausgabe2$=gui_input(300,320,ausgabe2$,2,10,0) ausgabe3$=gui_input(300,340,ausgabe3$,3,10,0) ;------------------------------------ Main2 Ende ------------------------------------ ;Mausoptionen/Tastaturoptionen FlushKeys gui_mh = 0 If MouseHit(1) Then gui_mh = 1 DrawImage maus, MouseX(), MouseY() ;Mausoptionen ende ;Flip usw. Flip Until KeyHit(1) ;Solang Escape net gedrückt End ;Flip ende ;------------------------------------- Main1 ende -------------------------------- ;Input Funktion 1 - Beweglich ;SpeicherVariable=gui_input(PositionX,PositionY,SpeicherVariable,ID,Maximale länge,Rücksetzen) Function gui_input$(x,y,txt$,id,max,ruck) Color 255,255,255 Rect x-1,y-1,StringWidth(txt$)+18,StringHeight(txt)+2,0 If gui_mh If RectsOverlap(x,y,StringWidth(txt)+16,StringHeight(txt),MouseX(),MouseY(),1,1); And gui_erra = 0 gui_selinp = id ElseIf gui_selinp = id gui_selinp = -1 EndIf EndIf If KeyHit(28) And ruck=0 gui_selinp=id+1 ElseIf KeyHit(28) And ruck=1 gui_selinp=-1 EndIf If KeyHit(1) Then gui_selinp=-1 If id=gui_selinp Then If Len(txt$)<max Then key=GetKey() If key>31 Then txt$=txt$+Chr(key) If KeyHit(82) Then txt$=txt$+"0" If KeyHit(79) Then txt$=txt$+"1" If KeyHit(80) Then txt$=txt$+"2" If KeyHit(81) Then txt$=txt$+"3" If KeyHit(75) Then txt$=txt$+"4" If KeyHit(76) Then txt$=txt$+"5" If KeyHit(77) Then txt$=txt$+"6" If KeyHit(71) Then txt$=txt$+"7" If KeyHit(72) Then txt$=txt$+"8" If KeyHit(73) Then txt$=txt$+"9" If KeyHit(181) Then txt$=Left(txt$,Len(txt$)-1):txt$=txt$+"/" If KeyHit(83) Then txt$=txt$+"," EndIf If KeyHit(14) And Len(txt$)>0 Then txt$=Left(txt$,Len(txt$)-1) If Len(txt$)<max Then FlushKeys EndIf Rect x+StringWidth(txt$)+4,y+11,5,1 EndIf Text x+3,y,txt$ Return txt$ End Function [/quote][/quote] |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Von mir gibbet auch noch ne schöne Input Routine im Code Archiv 8) | ||
zocker2150Betreff: Hast du eine Tabulator-Taste an deiner Tastatur? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ja dann bitte benutzen - sonst wird´s nix mit der schnellen Hilfe.
Code: [AUSKLAPPEN] ;Global
Global gui_mh Global gui_selinp ;Grafik Optionen Graphics 1024,768 SetBuffer BackBuffer() ;Geladene Grafiken ;Global maus=LoadImage("gfx\maus.bmp") ;MaskImage maus, 255, 0, 255 ;--------------------------------------- Main1 -------------------------------------- ;Flip usw. Repeat Cls ;--------------------------------------- Main2 -------------------------------------- ausgabe1$=gui_input(300,300,ausgabe1$,1,10,0) ausgabe2$=gui_input(300,320,ausgabe2$,2,10,0) ausgabe3$=gui_input(300,340,ausgabe3$,3,10,0) ;------------------------------------ Main2 Ende ------------------------------------ ;Mausoptionen/Tastaturoptionen FlushKeys gui_mh = 0 If MouseHit(1) Then gui_mh = 1 ; DrawImage maus, MouseX(), MouseY() ; Mausoptionen ende Flip Until KeyHit(1) End ;------------------------------------- Main1 ende -------------------------------- ;Input Funktion 1 - Beweglich ;SpeicherVariable=gui_input(PositionX,PositionY,SpeicherVariable,ID,Maximale länge,Rücksetzen) Function gui_input$(x,y,txt$,id,max,ruck) Color 255,255,255 Rect x-1,y-1,StringWidth(txt$)+18,StringHeight(txt)+2,0 If gui_mh Then If RectsOverlap(x,y,StringWidth(txt)+16,StringHeight(txt),MouseX(),MouseY(),1,1); And gui_erra = 0 gui_selinp = id ; ElseIf gui_selinp = id ; gui_selinp = -1 EndIf EndIf Text 20,20, "gui_selinp " + gui_selinp Text 20,40, "id " + id If KeyHit(28) Then gui_selinp = gui_selinp + 1 ; Hier hab ich was geändert If gui_selinp > 3 Then gui_selinp = 1 ; Und dort kannst ja was anderes machen wenn willst ; ElseIf KeyHit(28) And ruck=1 ; gui_selinp=-1 EndIf ; If KeyHit(1) Then gui_selinp=-1 If id=gui_selinp Then If Len(txt$)<max Then key=GetKey() If key>31 Then txt$=txt$+Chr(key) If KeyHit(82) Then txt$=txt$+"0" If KeyHit(79) Then txt$=txt$+"1" If KeyHit(80) Then txt$=txt$+"2" If KeyHit(81) Then txt$=txt$+"3" If KeyHit(75) Then txt$=txt$+"4" If KeyHit(76) Then txt$=txt$+"5" If KeyHit(77) Then txt$=txt$+"6" If KeyHit(71) Then txt$=txt$+"7" If KeyHit(72) Then txt$=txt$+"8" If KeyHit(73) Then txt$=txt$+"9" If KeyHit(181) Then txt$=Left(txt$,Len(txt$)-1):txt$=txt$+"/" If KeyHit(83) Then txt$=txt$+"," EndIf If KeyHit(14) And Len(txt$)>0 Then txt$=Left(txt$,Len(txt$)-1) Rect x+StringWidth(txt$)+4,y+11,5,1 EndIf Text x+3,y,txt$ Return txt$ End Function so das wars. Jetzt sollte wenigstens das mit dem Sprung ( 2.) ) klappen. zu 1.) Mit dem Befehl "EXIT" kannst du aus deiner Schleife springen. Solltest ansonsten dein Problem genauer beschreiben (Code). |
||
Munch |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jop hab ich zufällig... ![]() Das problem. Wenn der user im input feld ist, soll er mit der Escape taste aus diesem springen. Wenn er dan nochmal drückt, soll das programm beendet werden. Doch dies funktioniert nicht, er spring dan aus dem input feld aber nicht mehr aus dem programm. Wenn ich nicht ins input feld reingehe, springt er aber noch aus dem programm, also das funktioniert. Ich denke es liegt daran das ich flushkeys nicht richtig einsetze, deswegen hatte ich darum gebeten das mir Flushkeys jemand mal genauer erklärt, weil damit hab ich zimlich probleme. |
||
zocker2150 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah ok verstehe...
Bei deiner Hauptschleife machst du einfach Code: [AUSKLAPPEN] Until KeyHit(1) And gui_selinp = 0
als Abbruchkriterium. und in der Funkion Code: [AUSKLAPPEN] If KeyHit(1) Then gui_selinp = 0
wieder rein. Das mit Flushkey einfach weglassen. http://www.blitzbase.de/befehle2d/flushkeys.htm ...mehr kan man eigendlich net über den Befehl sagen. |
||
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
um eine input routine zu begrenen muß man da eigentlich eine selber schreiben oder kann man auch einfach den befehl input auf ne bestimmte länge verkürzen??? | ||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
@5k41: Geht nur mit selbst geschriebener Funktion, es gibt aber sicher mehr als genug hier im Forum. Ist ja auch nicht wirklich schwer ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich kann auch eine schreiben das is net das prob bin nur zu faul und dachte blitz hätte sowas praktisches glecih drin...(will mich ja blos net überarbeiten ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine ganze menge an Überraschungen gibt es auch auf blitzbase.de. Da gibt es so eine Onlinehilfe, da stehen viele wundersame Befehle zur Auswahl, und wenn wir uns den input Befehl anschauen stellen wir sogar fest das der einzigste Parameter ein String ist, na also wenn das nicht dolle ist. | ||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() ![]() ![]() |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group