• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

harde copy van een ductionary zonder loop ?

Status
Niet open voor verdere reacties.

sylvester-ponte

Verenigingslid
Lid geworden
19 apr 2007
Berichten
6.550
Code:
Sub test()
    Dim A, B, D1, D2
    Set D1 = CreateObject("scripting.dictionary")
    ReDim A(2, 3)
    A(1, 2) = 5
    B = A 'hier wordt B een copy van A
    B(1, 2) = 4
    temp = A(1, 2) - B(1, 2) 'temp = nu 1 , dus dit werkt
    
'nu de dictionary
    D1(2) = "twee"
    D2 = D1 ' hier gaat het mis, kan dit eenvoudig zonder loop?
End Sub
 

Bijlagen

  • harde copy van een dictionary zonder loop.xlsm
    13,7 KB · Weergaven: 40
Laatst bewerkt:
Maak er eens dit van:
Set D2 = D1
 
edmoor, op deze manier krijg je een pointer naar D1 .
dat houdt in dat als D2 wijzigt, ook D1 wijzigt . dat is niet de bedoeling.
 
Maar er dan 2 aan die je initiëel tegelijkertijd vult.
Daarna kan je ze dan los van elkaar gebruiken.
Code:
Sub test()
    Dim A, B, D1, D2
    Set D1 = CreateObject("scripting.dictionary")
    Set D2 = CreateObject("scripting.dictionary")
    
    ReDim A(2, 3)
    A(1, 2) = 5
    B = A 'hier wordt B een copy van A
    B(1, 2) = 4
    temp = A(1, 2) - B(1, 2) 'temp = nu 1 , dus dit werkt
    
'nu de dictionary's
    D1(2) = "twee"
    D2(2) = "Drie"
End Sub
 
Net zoals een Collection moet je een Dictionary stuk voor stuk vullen.
In die zin wijkt een array essentieel van beide af.
 
edmoor, ik wil tussen door een kopie van een dictionary maken. ik hoopte dat dat ,net zo als bij een matrix of een array, zonder loopje kon.

snb, dan maar met een loepje.
 
Waarom zou je een kopie van een Dictionary willen maken ?
 
Als je een exacte kopie wilt maken kan dat zeker niet zonder loop. En als de dictionary ook nog eens objecten bevat moeten die ook per stuk middels een loop worden gekopieerd. Mijn vraag is dus eigenlijk hetzelfde als die van snb hier boven.
 
als ik een programma bvb een spel , dan moet er na een aantal zetten vooruit steeds teruggezet worden.
ik sla alle situaties op.
als een situatie dood loopt moet er terug gezet worden. enz enz het kan met een dictionary om met een groot gedimensioneerde matrix.
nu ik weet dat een dictionary niet ze snel en makkelijk gekopieerd kan worden sluit ik dit draadje.

bedankt voor het mee denken.
 
Als een dictonary als items bijv. arrays bevat, kan in de dictionary per item naar de eerste aktie teruggegaan worden.
Daarvoor hoeft niet gekopieerd te worden.
 
de bedoeling is een dictionary met dictionarys
en om goed terug te kunnen zetten wordt in de volgende zet eerst de vorige situatie gekopieerd om daar in de volgende zetten te proberen.
 
Daarvoor lijkt me een kopie van een dictionary niet noodzakelijk.
Zoals je weet kun je een array wél kopiëren. Die kun je gemakkelijk dezelfde funktionaliteit (key/item) geven als een dictionary.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan