Seite 1 von 1

Array() duplizieren

Verfasst: Sa, 11.07.2015 16:17
von clag
Hallo Kenner und Könner,

bei dem Versuch ein Array() zu duplizieren, bin ich über etwas gestolpert, was ich nicht recht verstehe,
folgendes habe ich getan:

Code: Alles auswählen

sub test( mListe() ) 
	xListe() = mListe()
	msgbox join(xlist()," - ") & chr(10) & join(mList()," - ")
	... 
	xListe() manipulieren bzw sortieren 
	...
	msgbox join(xList()," - ") & chr(10) & join(mList()," - ")
end sub
die erste Messagebox zeigt mir zwei identische Zeichenfolgen an, das scheint auch erst einmal richtig zu sein.
die zweite Messagebox zeigt mir aber auch zwei identische, diesmal zwei manipulierte Zeichenfolgen an?

Daran scheitert ein vorher nacherher Vergleich natürlich massive!
Wieso wird die unberührte "mListe()" ebenfalls manipuliert dargestellt?

Code: Alles auswählen

 xListe() = mListe()
Erzeugt dieses nur einen zweiten Namen für das selbe Array?

Wenn ja, wie dupliziert man ein Array schnell und richtig?

Re: Array() duplizieren

Verfasst: Sa, 11.07.2015 17:30
von komma4
Steht bei Andrew (meine Ausgabe: 3.4.2. The unexpected behavior of arrays)
Andrew Pitonyak: OpenOffice.org Macros Explained, Third Edition hat geschrieben:Assigning one array variable to another makes a reference to the first array rather than copying the data. All changes made to either are automatically seen by the other. It doesn’t mater which one is changed; they are both affected.
Möchtest Du eine Kopie erstellen, dann übertrage die einzelnen Elemente des Arrays in das Ziel-Array

Code: Alles auswählen

REDIM bArray(UBOUND(aArray)) 

FOR i = LBOUND(aArray) TO UBOUND(aArray)
   bArray(i) = aArray(i)
NEXT

Re: Array() duplizieren

Verfasst: Sa, 11.07.2015 17:55
von clag
Hallo komma4,

besten Dank für die schnelle und präzise Antwort,
und gleich noch eine Lösung mitgeliefert. "thumb up" :)