Avatar billede mini-me Nybegynder
30. september 2008 - 22:33 Der er 8 kommentarer og
2 løsninger

Løkker og arrays

Hej,

Jeg har et problem med at få mine "options" til at blive skrevet ud:

Det går galt når jeg vil kalde mit array med array_navn&i

Jeg kan ikke selv komme i tanke om hvordan det skal løses.
<%

    '  Step 1 : Byg min PC
    '  Array over hvilke emner vi skal have fat i mit eksempel: Processor, Operativsystem, Hukommelse, Harddisk, Optisk Drev
    Dim arrayStep1(4) ' Get Count of arrayItems IMPORTANT!
    arrayStep1(0) = "Processor"
    arrayStep1(1) = "Operativsystem"
    arrayStep1(2) = "Hukommelse"
    arrayStep1(3) = "Harddisk"
    arrayStep1(4) = "Optisk drev"
   
    Dim arrayOption1(1), arrayOption2(4), arrayOption3(2), arrayOption4(2), arrayOption5(2)
    ' Array over enheder i de enkelte kategorier, pris kommenteres med ;
    arrayOption1(0) = "Black Intel Core Duo SP9300;1200"
    arrayOption1(1) = "White Intel Core Single SP1111;-500"
   
    arrayOption2(0) = "Windows XP Home;400"
    arrayOption2(1) = "Windows XP Prof;700"
    arrayOption2(3) = "Vista Home;600"
    arrayOption2(4) = "Vista Business;800"
   
   
    arrayOption3(0) = "1024mb;399"
    arrayOption3(1) = "2048;599"
    arrayOption3(2) = "4096;1099"
   
    arrayOption4(0) = "80Gb Seagate;1000"
    arrayOption4(1) = "120GB seagate1300"
    arrayOption4(2) = "160Gb Seagate;1500"
   
    arrayOption5(0) = "DVD/Brænder;400"
    arrayOption5(1) = "DVD/Brænder m. lightscribe;500"
    arrayOption5(2) = "Ingen;-400"
       
    Response.write "Vælg komponenter"
    response.write "<br>"
   
    ' Udskriv en flot selectbox
    i = 0
    for each stepValue in arrayStep1
        response.write stepValue
        response.write "<select name=""" & trim(stepValue) & """>"
            ' Løber hele step1 igennem
           
            for each sOptionValue in arrayOption&i '<--- FEJLER HER!!!
           
                sOptionValue = split(sOptionValue,";")
                response.write "<option value=""" & sOptionValue(0) & """>" & sOptionValue(0) & sOptionValue(1) & "</option>"
            next
       
        response.write "</select><br />" & vbCrlf
        i = i + 1
    next
Avatar billede arne_v Ekspert
30. september 2008 - 22:45 #1
Det kan du ikke.

Jeg gætter på at du skal lave et 2 dimensionelt array.
Avatar billede mini-me Nybegynder
30. september 2008 - 22:54 #2
Det har du sikkert ret i... tror det er sådan jeg har løst det tidl.

Nå det må blive når der er mere fritid, smid et svar.
Avatar billede thesurfer Nybegynder
30. september 2008 - 23:48 #3
Det skulle da være muligt at execute "arrayOption&i".. eller måske execute det over til en anden variabel.

Eksempel:

for each sOptionValue in & Execute (arrayOption&i)

Eller ligende.

Man burde også kunne gøre sådan her:

arr = Execute("arrayOption&i")
for i = 0 to ubound(arr)

Execute i ASP svarer sådan ca til eval i JavaScript.

Ingen af forslagene er testet..
Avatar billede softspot Forsker
01. oktober 2008 - 00:20 #4
Omend jeg vil mene at thesurfer's sidste forslag vil fungere, så vil jeg dog ikke anbefale det som normal praksis for at håndtere din udfordring. Der vil jeg, som Arne foreslår, hellere benytte 2D arrays, eller arrays af arrays (da dine arrays ikke har samme længde). Noget i stil med dette:


    ' ... kode der definerer dine arrays ligger her...

    ' definér et array som indeholder alle dine option-arrays
    arr = Array(arrayOption1,arrayOption2,arrayOption3,arrayOption4,arrayOption5)

    Response.write "Vælg komponenter"
    response.write "<br>"
   
    ' Udskriv en flot selectbox
    i = 0
    for each stepValue in arrayStep1
        response.write stepValue
        response.write "<select name=""" & trim(stepValue) & """>"
            ' Løber hele step1 igennem
           
            for each sOptionValue in arr(i) '<--- FEJLER HER!!!
           
                sOptionValue = split(sOptionValue,";")
                response.write "<option value=""" & sOptionValue(0) & """>" & sOptionValue(0) & sOptionValue(1) & "</option>"
            next
       
        response.write "</select><br />" & vbCrlf
        i = i + 1
    next
Avatar billede arne_v Ekspert
01. oktober 2008 - 02:51 #5
god pointe med array of array (også kendt som jagged array) fremfor 2D array (også kendt
som rectangular array)
Avatar billede mini-me Nybegynder
05. oktober 2008 - 21:01 #6
alle 3 smid et svar så lukker vi den.
Avatar billede softspot Forsker
05. oktober 2008 - 21:09 #7
Kommer her! :-)
Avatar billede arne_v Ekspert
05. oktober 2008 - 21:09 #8
ditto
Avatar billede thesurfer Nybegynder
05. oktober 2008 - 22:13 #9
Ingen points til mig, tak.
Avatar billede softspot Forsker
05. oktober 2008 - 22:42 #10
Tak for 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