Avatar billede tdh1309 Juniormester
14. april 2005 - 09:22 Der er 19 kommentarer og
1 løsning

Arrays og objekter

Jeg har et array hvor i jeg gerne vil placere x antal objekter, og jeg skal dynamisk kunne tilføje flere objekter.
Hvis jeg gør:
Dim myArr(1)
set myObj1 = new Obj
set myObj2 = new Obj
set myArr(0) myObj1
set myArr(1) myObj2

Virker det fint.

Det jeg gerne vil er:
Dim myArr(0)
set myObj1 = new Obj
set myObj2 = new Obj
set myArr(0) myObj1
ReDim Preserve myArr(1)
set myArr(1) myObj2

Her får jeg en fejl om at mit array er 'fixed or locked'
Hvordan får jeg løst dette?
Avatar billede erikjacobsen Ekspert
14. april 2005 - 09:35 #1
Prøv
Dim myArr()
Avatar billede tdh1309 Juniormester
14. april 2005 - 09:55 #2
Det giver et andet lille problem:
Microsoft VBScript compilation error '800a0411'

Name redefined

Hvordan får jeg lukket mit array, så jeg kan oprette det igen?
Avatar billede erikjacobsen Ekspert
14. april 2005 - 10:02 #3
Hvad skriver du?
Avatar billede tdh1309 Juniormester
14. april 2005 - 10:10 #4
Dim myArr(1)
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 10:11 #5
tror erikjacobsen mener noget i stil med:

Dim myArr()
ReDim myArr(1)
set myObj1 = new Obj
set myObj2 = new Obj
set myArr(0) myObj1
ReDim Preserve myArr(1)
set myArr(1) myObj2


Microsoft VBScript compilation error '800a0411'
Name redefined

Den fejl kommer kun hvis du Kører Dim på det samme navn to gange.
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 10:12 #6
Og det må man ikke:)
Avatar billede erikjacobsen Ekspert
14. april 2005 - 10:16 #7
Du må skrive mere end den ene linie:
  Dim myArr(1)
Avatar billede tdh1309 Juniormester
14. april 2005 - 10:21 #8
jo det gør jeg da også:
  set thisPage1 = new Page
  set thisPage2 = new Page
  thisPage1.pageName = "thisPage1"
  thisPage2.pageName = "thisPage2"
  Dim myObjArr(0)
  set myObjArr(0) = thisPage1
  Dim myObjArr(1)
  set myObjArr(1) = thisPage2

Normalt ville jeg også skrive Redim Preserve myObjArr(1) -> men her får jeg så:
Microsoft VBScript runtime error '800a000a'

This array is fixed or temporarily locked
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 10:23 #9
Microsoft VBScript runtime error '800a000a'

This array is fixed or temporarily locked

Hvis man sætter det til en fast str. til at starte med, så opstår fejlen (mener jeg:)), når du redim'er den.

Derfor skal du ikke initialisere den til at starte med. Prøvede du det jeg skrev?
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 10:26 #10
Prøv at læse det her, der er en guide.

http://www.aspfaq.com/show.asp?id=2067
Avatar billede erikjacobsen Ekspert
14. april 2005 - 10:31 #11
Men hvor har du skrevet det jeg foreslår 14/04-2005 09:35:54 ??  Hvis du ikke vil bruge et forslag er du velkommen til at lade være, men det vil være pænt at nævne det.
Avatar billede tdh1309 Juniormester
14. april 2005 - 10:42 #12
erikjacobsen:
  set thisPage1 = new Page
  set thisPage2 = new Page
  thisPage1.pageName = "thisPage1"
  thisPage2.pageName = "thisPage2"
  Dim myObjArr(0)
  set myObjArr(0) = thisPage1
  Dim myObjArr()
  Redim myObjArr(1)
  set myObjArr(1) = thisPage2

Ved Dim myObjArr() får jeg: Name redefined
Avatar billede tdh1309 Juniormester
14. april 2005 - 10:46 #13
skyggen2000:
Det der står i guiden er faktisk også det jeg har gjort.
Mit problem ligger i at arrayet bliver 'locked' når jeg sætter et objekt ind i det.

Kan man 'slukke' for et array så man efterfølgende kan oprette det igen uden at få en ->Name redefined
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 10:52 #14
der står dette her:

    Dim demoArray()
    ReDim demoArray(x)

du skal ændre din kode til

  set thisPage1 = new Page
  set thisPage2 = new Page
  thisPage1.pageName = "thisPage1"
  thisPage2.pageName = "thisPage2"
  Dim myObjArr()
  Redim myObjArr(0)
  set myObjArr(0) = thisPage1
  Redim preserve myObjArr(1)
  set myObjArr(1) = thisPage2

så burde det funke.
Avatar billede tdh1309 Juniormester
14. april 2005 - 11:02 #15
hmmm - så tæt på og så langt fra !!!
Humlen må være at arrayet bliver opfattes som fixed når jeg først satte den ved: Dim myObjArr(0) !

Super - tak for kampen, kom med et svar
Avatar billede skyggen2000 Nybegynder
14. april 2005 - 11:06 #16
Det har du ret i, jeg skrev også:
Microsoft VBScript runtime error '800a000a'

This array is fixed or temporarily locked

Hvis man sætter det til en fast str. til at starte med, så opstår fejlen (mener jeg:)), når du redim'er den.

Derfor skal du ikke initialisere den til at starte med. Prøvede du det jeg skrev?

erikjacobsen >> Desuden kom jeg vidst til at blande mig i dit spg. hvis forslag faktisk var det korrekte.

Vi kunne måske splitte dem, ellers giv dem alle til erikjacobsen.
Avatar billede erikjacobsen Ekspert
14. april 2005 - 11:11 #17
Ja, du skal kun skrive det uden et tal i parentesen - ikke begge dele ;)

Ingen point til mig, tak.
Avatar billede tdh1309 Juniormester
14. april 2005 - 11:42 #18
Det er jo altid problemet med korespodence over nettet om man kan misforstå hindanden. Jeg syntes nu også at du erik... skal have point...
Avatar billede tdh1309 Juniormester
14. april 2005 - 11:45 #19
erikjacobsen:
jeg har oprettet spørgsmålet "Point til erikjacobsen i forbindelse med Arrays og objekter" ....
Avatar billede erikjacobsen Ekspert
14. april 2005 - 12:37 #20
Det er der ingen grund til. Jeg samler slet ikke på point.
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