String länge - löscht alles

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • String länge - löscht alles

    Ich versuche per Tastatur einen String eingeben zu lassen.
    Klappt soweit alles, nur möchte ich eine Maximum Länge angeben.
    Suche habe ich benutzt, die Hilfe genau so, aber ich kann das in meinem Example nicht einbauen.

    Create:

    GML-Quellcode

    1. global.stunde="";
    2. active=false;

    Left pressed:

    GML-Quellcode

    1. active=true;
    2. keyboard_string=global.stunde;

    Draw:

    GML-Quellcode

    1. draw_sprite(spr_box,active,x,y);
    2. if active=true && string_length(keyboard_string)<10
    3. draw_text(x+1,y+1,keyboard_string);
    4. else
    5. draw_text(x+1,y+1,global.stunde);

    press Enter:

    GML-Quellcode

    1. active=false;
    2. global.stunde=keyboard_string;


    Wenn die Maximal länge von 10 erreicht wird, wird der String wieder zurück gesetzt, aber ich möchte das er dann dort stehen bleibt und
    ein z.B Piep Ton kommt damit man weiss, dass es zu viele Zeichen sind.

    2.) Wie änder ich den Code, damit man nur ZAHLEN benutzen kann, keine Buchstaben.
  • kann man keyboard string überhaupt einen wert zuweisen?

    ich versteh denen code nich ;) keyboard string kann meiner meinung nach keinen von dir zugewiesenen wert haben, und was das alles soll, wofür das ist weiß ich auch nicht, wenn ich dene fragestellung nochmal lese ohne denen code, dann würde ich so antworten:

    es gibt keycodes wie zB lastkey glaubn ich /(geh mal in die suche unter key) und lastchar oder sowas, zu global.stunde (falls das die variable für den string ist) musst du pro tastendruck den lastchar dazuaddieren, und VOR dem addieren eine if-abfrage starten if string_length(global.stunde)<10 {....} else sound_play(...)

    das mit der variable active in dinem code soltle ok sein, ein problem müsstest du noch lösen, denn wenn du lastchar abfrägst pro knopfdruck mussd du per drag and drop key press any event nehmen, denn falls dus im step event abfragen lässt, tuts in jedem step addieren, also öfters als dumöchtest,

    dazu kommt nun das mit den "nur-zahlen", dafür kannsd du entweder im key press any event den keycode abfragen und die range der erlaubten codes anpassen an ziffern, oder nach jeder addition des lastchar global.stunde=string_digits(global.stunde) hinzufügen.
  • Der Code war von Niffle und nur minimal umgeschrieben.
    Ist aber schon waaaaas älter.

    Mein Ziel ist es:
    Man klickt auf einen Kasten und dieser wird dann durch Active ausgewählt.
    Nur wenn er ausgewählt ist, soll man in diesen schreiben können, aber nur Maximal 10 Zahlen.
    Diese Zahlen soll man später wie eine Variable benutzen können.
    Durch Keyboard_string kann man ja auch Zahlen durch Backspace löschen.

    Wie man den kasten auswählt weiss ich, aber ich verstehe es immer noch nicht ganz, wie man in den Kasten schreibt, ohne dass er die Buchstaben löscht, falls es mehr als 10 sind.
    Entschuldige das ich deine Aussage nicht richtig verstehe, aber ich hoffe es fällt dir jetzt leichter es mir zu erklären, nachdem ich mein Problem genauer geschildert habe.
    Thanks ;D
    Geht doch bestimmt auch irgw mit Else ... ?!

    ERLEDIGT

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Prustel ()

  • erstmal würd ich für den kasten, der ja ein object ist eine locale variable nehmen, also nicht global.stunde sondern stunde.

    im left mouse event (auf den kasten klicken):

    stunde='';



    im keypressed <any> event:

    if string_length(stunde) <10 // nur falls weniger als 10 zeichen

    {

    stunde+=keyboard_lastchar;// füge letzten buchstaben hinzu

    //und falls du nur zahlen haben willsd

    stunde=string_digits(stunde);

    }

    das sollte es sein, hab das mit active wegelasen, da das ja schon bei dir funktioniert