[Gelöst] liste2 = liste1 , Zeiger oder echte Kopie?

Hey, nur ne kurze Frage zur Programmierlogik:

//Hängt einen Wert an den Array an
global func ArrayAdd(& anArray, xnNew, bool bNoDuplicates)
{
  if (GetType(anArray) != C4V_Array)
    return -1;
  if (bNoDuplicates)
  {
    var dTemp = ArrayDataIndex(anArray, xnNew);
    if (dTemp != -1)
      return dTemp;
  }
  anArray[GetLength(anArray)] = xnNew;
  return GetLength(anArray) - 1;
}
liste1 = ["hallo"]
liste2 = liste1
ArrayAdd(liste2,"tschüss")


Ändert sich dabei nun auch Liste1? Oder nur Liste2?

edit: es sind local oder static variablen, deswegen ists wichtig.

und eine ähnliche Problemstellung:

//Verschmiltz zwei Arrays
global func ArrayAddArray(& anArray, array anArray2, bool bNoDuplicates)
{
  if (GetType(anArray) != C4V_Array)
    return -1;
  if (GetType(anArray2) != C4V_Array)
    return -1;
  if (!GetLength(anArray2))
    return GetLength(anArray);
  for (var xTemp in anArray2)
    ArrayAdd(anArray, xTemp, bNoDuplicates);
  return GetLength(anArray);
}
liste1 = ["hallo"]
liste2 = ["tschüss"]
liste3 = liste1
ArrayAddArray(liste3,liste2)


Ziel ist es, die beiden listen 1 und 2 zu kombinieren, ohne die liste1 und liste2 selbst zu verändern. Geht das so?

>Ändert sich dabei nun auch Liste1? Oder nur Liste2?


Dazu steht in der Doku:

>Wird ein Array einer Variablen zugewiesen oder einer Funktion übergeben, bekommt diese Variable eine eigene Kopie des Arrays.


ArrayDataIndex brauchst du übrigens nicht, sowas ist schon eingebaut: http://wiki.nosebud.de/wiki/Undokumentiertes#GetIndexOf

ah alles klar, danke dir :slight_smile:
Die globalen funktionen habe ich fertig übernommen, gut möglich, dass die etwas älter sind. Solange sie funktionieren ist alles gut :slight_smile:
Dennoch danke für den Hinweis :wink: