Array() duplizieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Array() duplizieren

Beitrag 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?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Array() duplizieren

Beitrag 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
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Array() duplizieren

Beitrag von clag »

Hallo komma4,

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

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten