Array "kopieren" - ich glaub ich steh im Wald

    • GM 8

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

    • Array "kopieren" - ich glaub ich steh im Wald

      Warum gibt dieses eine Fehlermeldung à la "index out of bounds"?

      Quellcode

      1. array1[0,0] = '0-0'
      2. array1[0,1] = '0-1'
      3. array1[1,0] = '1-0'
      4. array1[1,1] = '1-1'
      5. array2 = array1
      6. show_message( string(array2[1,0]))


      Erscheint mir komplett unlogisch - hab ich was übersehen?
    • Irgendwie ist das ein Bug oder so O_o
      Denn das kommt auch wenn man nur schreib aarray1 = 5;
      show_message(array1[1]);
      Eigentlich müsste da ne meldung kommen dass die Variable nur unbekannt ist!
      Denn das wär logisch.

      Man kann arrays nicht einfach so koppieren.
      Du musst das mit einem Loop machen:

      var a, b;
      a = 0; b = 0;

      repeat(100) // Index des zwiten Arguments
      {
      repeat(100) // index des ersten Arguments
      {
      array2[a,b] = array1[a,b];
      a += 1;
      }
      b += 1;
      }

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Dank dir!
      Trotzdem merkwürdig, das bedeutet ja dass der GM wohl keine richtige Speicherverwaltung hat. Denn wenn ich sage, dass A = B dann muss A[0] auch das Gleiche wie B[0] sein.

      Na ja, dann eben mit loops :)
    • Dazu muss man die Hintergründe von GM oder eigentlich jeder Prog-Sprache verstehen (glaub ich zumindest):
      Wenn man irgendwo eine variable eingibt, nimmt der Interspreter immer den Wert dieser variable. Also die Zahl oder String die die Variable beinhaltet.
      Das heist du überträgst per a = b nur den Wert von B und garnichts anderes.
      Also ist es völlig egal ob b ein Array oder was auch immer ist.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • RE: Array "kopieren" - ich glaub ich steh im Wald

      p-head schrieb:

      Warum gibt dieses eine Fehlermeldung à la "index out of bounds"?

      Quellcode

      1. array1[0,0] = '0-0'
      2. array1[0,1] = '0-1'
      3. array1[1,0] = '1-0'
      4. array1[1,1] = '1-1'
      5. array2 = array1
      6. show_message( string(array2[1,0]))


      Erscheint mir komplett unlogisch - hab ich was übersehen?

      Wenn du schreibst "array2 = array1", dann wird in dem Fall nur das [0,0]-Element von array1 zugewiesen, da man Arrays mit dem GM ja nicht einfach kopieren kann (es wird nur das "Null-Element" übergeben). array2 ist nun einfach eine Variable bzw. ein Array mit nur einem Feld und kann mit array2, array2[0] oder auch array2[0,0] aufgerufen werden.
    • Und selbst wenn der GM Pointer hätte, würde dieser auf den selben Speicherbereich zeigen, ergo hätte Array1 und Array2 immer den selben Inhalt, was nicht sehr zielführend wäre. In anderen Programmiersprachen kannst du auch nicht einfach Arrays via = übertragen (eventuell, wenn der Operator überladen ist? Ich hab schon viel zu lange nicht mehr C++ programmiert). Ich löse das in ANSI C mit einem memcpy befehl.
      ...
    • Benutzer online 1

      1 Besucher