ds_list_replace

  • ds_list_replace

    Ich verwende eine globale ds_list, um path_ids zu speichern, die nach und nach erstellt werden - aber in der falschen Reihenfolge.
    Also dachte ich: Ganz einfach, nimmst Du ds_list_replace und schreibst aber vorher die Liste mit Nullen voll, weil - wo kein Eintrag da kein Replace - oder?
    Also:

    Quellcode

    1. ds_list_create (list)
    2. repeat (size) ds_list_add (0)
    Ich hatte noch nie versucht einen Wert zu ersetzen, der eine längere Liste voraussetzt. Wie soll das denn auch gehen?

    Jedenfalls wurden die Pfade dann so erzeugt:

    Quellcode

    1. if path_exists (ds_list_find(list,n) ) exit;
    2. pa=path_create (...);
    3. ds_list_replace (list, n, pa);
    Leider kamen falsche Ergebnisse. Dann dachte ich. path_id 0 existiert womöglich, wahrscheinlich sogar, und hab die Liste dann mit -1gefüllt. Hat nichts geholfen.

    Jetzt habe ich gar keine Werte in die Liste eingetragen. Das ds_list_replace scheint zu funktionieren und alles andere auch.

    Da das Problem offenbar schon gelöst ist fragt Ihr Euch vielleicht warum ich überhaupt poste. Nun, mir ist die Sache noch überhaupt nicht klar. Daß es scheinbar / erstmal / bei mir funktioniert, befriedigt nur halb.
  • Für solche Zwecke nimmst du besser

    GML-Quellcode

    1. ds_map...


    Denn da kannst du den key frei wählen, also auch die ID des Pfades nehmen.
    Das sollte auf jeden Fall funktionieren und ersparst dir auch eine unnöti g große Liste, die auch unsinnigerweise viel Speicher verbraucht.