Leerzeichen in Ini Datei vermeiden

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

  • Leerzeichen in Ini Datei vermeiden

    ]Hi Gamemaker Gemeinde,

    Ich habe da folgendes Problem:
    Wie kann ich in einer ini Datei Leerzeichen vermeiden ? - oder automatisch in ein "_" umwandeln ??( z.b. aus Maier Josef wir Maier_Josef)
    (Mein Problem ist wenn ein Benutzer einen Namen mit Leerzeichen eingibt habe ich falsche Werte in der DB - Score = 0)

    Folgenden Code habe ich am laufen:
    Game Maker

    Quellcode

    1. if ( file_exists("userdata1.ini") == false )
    2. {
    3. global.client_name = get_string("Username:","");
    4. ini_open("userdata1.ini");
    5. ini_write_string("DATA","NAME",global.client_name);
    6. ini_close();
    7. }
    8. if ( file_exists("userdata1.ini") == true )
    9. {
    10. ini_open("userdata1.ini");
    11. global.client_name = ini_read_string("DATA","NAME","DEFAULT");
    12. ini_close();
    13. }
    Alles anzeigen

    PHP File Verarbeitung für DB:
    (DB Anmeldung etc. ist natürlich nicht dabei .... *lol)

    Quellcode

    1. $player = $mysqli->real_escape_string(str_replace("|", "_"," ", $_GET['player']));
    2. $score = $mysqli->real_escape_string($_GET['score']);
    3. echo str_replace("|", "_"," ",$player);
    4. $Room=$_GET['Room'];
    5. $query = $mysqli->query("INSERT INTO $Room(name,points) VALUES('$player','$score')");


    Leider bekomme ich wenn ein Benutzer Leerzeichen im Namen verwendet keinen Eintrag in der DB beim Benutzernamen und auch keine Score.
    Bei einem durchgängigen Benutzernamen ist es kein Problem, da funzt alles :)
    Siehe Anhang....



    Please Help

    lg Che
    Bilder
    • Handy.png

      968,48 kB, 1.000×563, 417 mal angesehen
  • In dem Fall empfiehlt sich string_replace.
    so schreibst du einfach, bevor du den Namen in die INI schreibst das hier:

    GML-Quellcode

    1. ​global.clinet_name = string_replace(global.client_name," ","_")


    dann sollte er das gewünschte Ergebnis bringen, ich habe es gerade nochmal getestet.
    Um wieder ein Leerzeichen rein zu hauen, einfach die Funktion umdrehen also " " mit "_" austauschen und umgekehrt.
    Allerdings, darf der Name dann kein _ enthalten, da es sonst zu mehreren Leerzeichen kommen kann.

    -Nils
  • Dann sorge einfach dafür, dass man es nicht benutzen kann.
    So das bei der Eingabe, oder nach der Eingabe sofort die _ durch ein Leerzeichen ersetzt werden, oder eine Error Message kommt, dass man kein _ benutzen darf.

    Du musst nur den String durch checken und wenn ein Char ein "_" ist, dann wird die Meldung, oder das ersetzen des Zeichens ausgeführt.
  • Danke nochmals für deine Anregung.
    Ich habe mich dann auf F1 in GM:Studio begeben und was brauchbares gefunden.

    string_letters(str);

    Description:
    With this function you can remove all characters that are not classed as letters.
    This is handy for preventing people from entering unwanted characters into a text entry (like entering "#" to force a new line).
    Note: This function only detects the 26 letter english alphabet from A - Z.
    Example:username = string_letters(username);
    The above code will set the "username" variable to only hold the letter characters of the original string.

    Ich denke mal das könnte die Lösung sein.
    Doppelte Usernamen sind in dem Fall kein Problem da ich die DB nicht danach absuche....
    Es werden ja nur die ersten 10 angezeigt.

    lg
    che
  • Danke nochmals.
    string_letters(str); funktioniert schon mal...
    string_letterdigits leider nicht .....

    Nun kann ich nach weiteren Fehlern suchen *lol
    Ich hatte mir ein kleines Script aus dem Markplace für den Onlinescore gekauft.
    (sehr teuer - 0,99 € *lol - welches aber nicht für meine Zwecke passte und ich etwas umschreiben musste)
    Original war nur Player und Score
    Ich brauche aber aktuellen Raum - Player - Score (was ja auch schon funktioniert)

    Nun haut der mir einige fehler bei dieser Datei raus:
    (ist mir noch etwas zu hoch*lol)

    Quellcode

    1. // This script splits a string separated by a substring in a ds_list.
    2. var sepchar,str,new_str,ds,i,cur_char,sep_len;
    3. sepchar = argument0;
    4. sep_len = string_length(sepchar);
    5. str = argument1; new_str = ""; ds = ds_list_create();
    6. if (sepchar!="" && str!="") {
    7. if (string_copy(str,string_length(str)-sep_len+1,sep_len)!=sepchar) str += sepchar;
    8. for (i=1;i<=string_length(str);i+=1) {
    9. cur_char = string_char_at(str,i);
    10. if (cur_char+string_copy(str,i,string_length(sepchar)-1)==sepchar) {
    11. ds_list_add(ds,new_str); new_str = ""; i += string_length(sepchar)-1;
    12. } else {
    13. new_str += cur_char;
    14. }
    15. }
    16. return ds;
    17. }
    18. return -1;
    Alles anzeigen


    lg
    che
  • Hi nochmals.
    Da es ja kein Problem mehr mit der Datenübergabe an den Server gab hatte ich einen neuen Beitrag aufgemacht.

    Fehlermeldung aus Script die nicht immer beim gleichen Level kommt
    Mit Bilder ...

    Das komische ist das dieser Fehler nach 5 Levels oder auch erst nach 25 Auftritt.
    Script wird aber nach jedem Level aufgerufen...und sollte dann ja auch schon beim ersten raum versagen...

    lg
    che