napisał: admin postów: 613
umieszczony: 12 lipca 2012 11:05
|
|
Witam,
Jesli chcesz operowac na nowej kolekcji, zawierajacej kopie obiektow, musisz te obiekty skopiowac:
For Each oB In colKolekcja_ini
Set clObiekt = New clKlasa
clObiekt.Wlasciwosc1= oB.Wlasciwosc1
clObiekt.Wlasciwosc2= oB.Wlasciwosc2
'...
colKolekcja.Add clObiekt
Next oB |
|
napisał: ziggiz postów: 1
umieszczony: 12 lipca 2012 00:19
|
|
Witam,
mam następujący problem i od jakiegoś czasu nie mogę znaleźć w sieci śladu rozwiązania.
Postaram się opisać zagadnienie słownie, ponieważ kod jest dość obszerny i zagmatwany... ale do rzeczy
1. Deklaruję klasę (właściwości i metody) clObiekt
2. Korzystając z zewnętrznego źródła danych inicjuję kolekcję colKolekcja składającą się obiektów clObiekt
3. Wykorzystując tę kolekcję przetwarzam poszczególne jej elementy i dodaję kolejne obiekty.
4. pkt2-3 wykonywane są n-razy
Problem polega na tym, że inicjacja kolekcji w pkt2 musi być wykonywana n-razy i chciałbym zoptymalizować kod np poprzez zapamiętanie całej kolekcji w jakiejś zmiennej i tylko kopiować kolekcję zamiast ją inicjować danymi źródłowymi.
Oczywiście rozwiązanie(1) typu:
Set colKolekcja = colKolekcja_ini
(zastosowane pod koniec pkt2) powoduje utworzenie referencji a nie skopiowanie całej początkowej zawartości kolekcji, co skutkuje tym, że wszelkie zmiany wykonane w colKolekcja są odwzorowane w colKolekcja_ini.
Próbowałem, też przekopiować kolekcję przypisując element po elemencie
for each clObiekt in Kolekcja_ini
kolekcja.add item:clObiekt
next clObiekt
Pomijając wątpliwy uzysk na czasie wykonywania tej operacji... efekt jest taki sam jak przy rozwiązaniu (1)
Czy istnieje jakieś rozwiązanie pozwalające przekopiować kolekcję do innej zmiennej bez tworzenia referencji?
Będę wdzięczny za podpowiedź :)
pozdrawiam
|
|
wstecz 1 dalej wszystkich stron: 1
|