Komische Zählung bei der for-Schleife!!

  • GM 8

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

  • Komische Zählung bei der for-Schleife!!

    Guten Abend Gm-d.de,

    ich habe seit ein paar Tagen ein Problem mit der GM for-Schleife. Unswahr will ich eine Variable mit Daten teilen, das war eigentlich kein Problem. Soweit sogut, nun zähl ich die Anzahl an Zeichenketten der getrennten Variable, auch kein Problem. So jetzt kommt mein eigentlcihes Problem: Jede geteilte Zeichenkette soll jetzt nocheinmal geteilt werden und ausgewertet werden, das alles in der for-Schleife,

    So, einmal der Explode Skript das ich benutze:

    GML-Quellcode

    1. //Argumente zu Variablen
    2. arrayname = argument0
    3. globarr = argument1
    4. meinstring = argument2
    5. teiler = argument3
    6. loeschen = argument4
    7. limit = argument5
    8. //wie oft kommt der Teiler im String vor
    9. vorkommen = string_count(teiler,meinstring)
    10. if (limit == 0 || vorkommen < limit) {//wenn Limit aus ist oder der Teiler weniger oft vorkommt als das Limit
    11. sooft = vorkommen//vorkommen-mal "explodieren"
    12. } else {
    13. sooft = limit//limit-mal "explodieren"
    14. }
    15. if (vorkommen == 0) {//wenn es nie vorkommt, gleich so lassen
    16. if (globarr == 1) {
    17. variable_global_array_set(arrayname,0,meinstring)
    18. } else {
    19. variable_local_array_set(arrayname,0,meinstring)
    20. }
    21. return 0
    22. exit
    23. }
    24. for (i=0; i<sooft; i+=1) {
    25. meinstring2 = meinstring//Kopie anlegen
    26. position = string_pos(teiler,meinstring)//wo ist der Teiler
    27. if (loeschen == 1) {//wird der Teilere gelöscht?
    28. meinstring = string_delete(meinstring,position,9999999)//Teiler und alles dahinter raus
    29. } else {
    30. meinstring = string_delete(meinstring,position+string_length(teiler),9999999) //alles hinter dem Teiler raus
    31. }
    32. if (globarr == 1) {
    33. variable_global_array_set(arrayname,i,meinstring)
    34. } else {
    35. variable_local_array_set(arrayname,i,meinstring)
    36. }
    37. meinstring = string_copy(meinstring2,position+string_length(teiler),9999999)//meinstring beinhaltet nun den alten String ohne das Rausgeschnittene und Teiler
    38. letzteid = i//der wievielte Durchlauf
    39. }
    40. if (meinstring == "" || meinstring == " ") {
    41. return sooft//wenn alles weg ist, sind wir fertig
    42. } else {//sonst muss noch der Rest it ins Array
    43. if (globarr == 1) {
    44. variable_global_array_set(arrayname,letzteid+1,meinstring)
    45. } else {
    46. variable_local_array_set(arrayname,letzteid+1,meinstring)
    47. }
    48. return sooft+1
    49. }
    Alles anzeigen


    Das SizeOf Skript um die Anzahl des Arrays herauszufinden:

    GML-Quellcode

    1. if (!variable_local_exists(argument0)) return -1;
    2. for (size = 0; size < 32000; size += 1)
    3. {
    4. value = variable_local_array2_get(argument0, argument1, size);
    5. if (is_real(value))
    6. {
    7. if (value == 0)
    8. {
    9. break;
    10. }
    11. }
    12. }
    13. return size;
    Alles anzeigen


    Und schließlich der eigentliche Teil:

    GML-Quellcode

    1. explode_script("message",0,message,"~",1,0);
    2. anzahl=sizeof("message");
    3. show_message("Du hast " + string(anzahl) + " Nachrichten in deinem Postfach!");
    4. for (i=0; i<=anzahl; i+=1)
    5. {
    6. explode_script("messagedata",0,message[i],"|",1,0);
    7. if real(messagedata[0])=0
    8. {
    9. show_message(string(i) + ". Nachricht#Von: " + messagedata[1] + "#" + messagedata[2]);
    10. }
    11. if real(messagedata[0])=1
    12. {
    13. show_message(string(i) + ". Spezielle-Nachricht#Von: " + messagedata[1] + "#" + messagedata[2]);
    14. }
    15. }
    Alles anzeigen


    Die Variable i wird wenn ich es mit show_message anzeige 3 ausgegeben. die var anzahl ist immer richtig.

    Beispielsweise sind 2 Nachichten in der var. Er liest nur die erste und macht weiter, ohne die Schleife von 0 bis anzahl abzuarbeiten. ?(

    edit: Problem gelöst!! DIe variable i gab es schon, daher hab ich eine andere genommen. :D

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