Avatar billede tjacob Juniormester
19. oktober 2007 - 12:37 Der er 3 kommentarer og
1 løsning

Variabel ændres på højre side af lighedstegn?

Jeg har to 2-dim Arrays der begge er erklæret Public i et modul:

Public Var1(,) as integer
Public Var2(,) as integer

I en sub bliver Var1 redimmet og fyldt, og senere sættes Var2 = Var1 (de to arrays er altid ens mht dimensioner og størrelse):

Var2 = Var1

Senere igen -i andre subs- bliver værdierne løbende ændret i Var2, men IKKE i Var1. Dvs Var1 ændres ikke rent programmelt, men værdierne BLIVER ændret sideløbende i Var1????

Hvad sker der her? Skal jeg erklære dem anderledes? (De skal begge være Public, da de skal bruges på tværs af flere moduler og forms).

Jeg kan tilføje, at hvis jeg i stedet for Var2 = Var1 sætter:
    ReDim Var2(Var1.GetUpperBound(0), Var1.GetUpperBound(1))
    For i As Integer = 0 To Var1.GetUpperBound(0)
        For j As Integer = 0 To Var1.GetUpperBound(1)
            Var2(i, j) = Var1(i, j)
        Next j
    Next i

Så bliver Var1 IKKE ændret, når der sker ændringer i Var2.
Avatar billede neoman Novice
19. oktober 2007 - 12:44 #1
var2=var1 betyder i dette tilfælde "tag adressen i memory på var2 og sæt det lig med med adressen på var1"

hvis du vil skabe en ny selvstændig  array med samme værdier, så : var2=var1.copy
Avatar billede neoman Novice
19. oktober 2007 - 12:47 #2
oops - .clone:)
Avatar billede tjacob Juniormester
19. oktober 2007 - 12:54 #3
Ja, du har sørme ret. Jeg måtte dog ændre den til: Var2 = CType(Var1.Clone, Integer(,))

men nu spiller det!  -læg et svar.
Avatar billede neoman Novice
19. oktober 2007 - 12:55 #4
:P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester