Avatar billede madrich Nybegynder
31. marts 2001 - 07:11 Der er 40 kommentarer og
1 løsning

Hvad gør Dim

Hurtigt lille spgm - --> hvad gør Dim i et asp-script
Avatar billede Slettet bruger
31. marts 2001 - 08:09 #1
jeg har jeg egentlig også undret mig over...
Der er jo ikke forskel på, om man \"dimmer\" en variabel, eller om man ikke gør.
- begge dele virker ihvertfald!
Avatar billede Slettet bruger
31. marts 2001 - 08:09 #2
\"jeg har jeg\" = \"det har jeg\"
Avatar billede madrich Nybegynder
31. marts 2001 - 08:13 #3
Jeg har en ide om at det er for at serveren på forhånd er klar over at der kommer variabler ved navn (det man har dimmet)

men om det bare er extra guf for at belaste serveren mindre eller om der er en dybere mening det - ja det er det svar jeg giver 5 points for!
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 08:33 #4
Dim bruges bl.a til at Dimensionere et array og til at fortælle VBScript \"motoren\" at \"disse\" variabler er tilgængelige, hvis du bruger Option Explicit, der KRÆVER at du Dim\'er alle dine variabler.
Avatar billede madrich Nybegynder
31. marts 2001 - 08:35 #5
Når du skriver  \"Dimensionere et array\" hvad mener du så præcis, (undskyld hvis spgm er for latterligt:))
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 08:41 #6
Hvis du skal lave et array med f.eks. 50 elementer skal du skrive:

Dim arrayname(50)

dvs. der er faktisk 51 der da den tæller fra 0.

Så kan du skrive:

arrayname(0) = \"noget!\"
arrayname(1) = \"noget andet..\"

und so weiter ...
Avatar billede madrich Nybegynder
31. marts 2001 - 08:43 #7
Hvad bruger man så det til (jeg adder lige et par points)
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 08:54 #8
Jo ser du, hvis nu du f.eks. har et array med 9 elementer:

Dim arrNavne(8)

så kan du f.eks. lægge navne, strenge whatever ind i det:

arrNavne(0) = \"Thomas\"
arrNavne(1) = \"Svend\"
arrNavne(2) = \"Erik\"
arrNavne(3) = \"Knud\"
arrNavne(4) = \"Michelle\"
arrNavne(5) = \"David\"
arrNavne(6) = \"Mogens\"
arrNavne(7) = \"Duddi\"
arrNavne(8) = \"Vanessa\"

så kan du gøre således for at få udskrevet dem alle:

For Index = 0 To 8 \' eller UBound(arrNavne) der returnerer det højeste element
  Response.Write arrNavne(Index)
Next

Arrays er også yderst brugbare hvis man skal lave en sortering på et array (der skal man dog selv skrive koden ..)
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 08:55 #9
Sig til hvis du ikke heeelt forstår det (det kan jo ske ... vi er ikke alle sammen lige lærenemme :o))
Avatar billede madrich Nybegynder
31. marts 2001 - 09:27 #10
Det var squ da en comment der ville noget!

Naeej min uvidenhed omkring array ( og for den sags skyld andre asp/javascript \"tags/syntax\" ) bunder nok mest i at jeg er hoppet ud i kodningen med lukkede øjne og uden nogen form for læringsplan!
desuden kan man squ da forstå noget man ikke rigtig har hørt om før!

nåmen øhh hvornår er arrays så skide brugbare??
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 09:44 #11
:-) jeg kan ligeså godt forklare det så det er til at forstå første gang :-)

jeg havde heller ingen \"læringsplan\" .. dog havde jeg 3 års erfaring i BASIC sproget (som VBScript/ASP bygger på)..

Arrays er brugbare mange steder.. Jeg bruger f.eks. 2 i en ASP fil hvor den udskriver indholdet i en <select>. Når så jeg udskriver dem kan jeg checke om den postede værdi er lig en af værdierne i array\'et, og hvis den er så kan jeg makere min <option> med \"selected\". så man ikke skal skrive:

<select..>
<option <%=if .. then response.write \"selected\"%>>noget</option>
..

ud for hver ..
Avatar billede madrich Nybegynder
31. marts 2001 - 10:20 #12
har du et link der viser hvordan,

hvis jeg forstår rigtigt hvad man nok ikke skal regne med) skal man vælge/intaste en eller anden værdi i en side der så opdateres og så vil den værdi (og de andre værdier i array\'et) man valgte være i din dropdownbox

noget ala hvis det havde været et DB træk

sql = \"select from _tabelnavn_ where id = \'\"&request.form/querystring(\"et_eller_andet\")&\"\'\"

set rs = connection.execute(sql)

do while not rs.eof

strOption = strOption & \"<option value=\" & rs(colonnenavn & \"</option>\"

rs.movenext
loop


Eller er jeg bare træt (kører på 32 time:))



Avatar billede madrich Nybegynder
31. marts 2001 - 10:22 #13
Du får ikke points før jeg har fattet det:)
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 10:24 #14
hmm .. det er ikke lige sårn nej ..

her et et eksempel på det jeg prøvede at forklare ... det er ikke et kørtbart eksempel..

<%
    Response.Buffer = True

    Dim strColors(15, 1)
    Dim strSmiley(15)
   
    \' Selectable colors
    strColors(0,0) = strCustom:  strColors(0,1) = \"(Custom)\"
    strColors(1,0) = \"#00ffff\":  strColors(1,1) = \"Aqua\"
    strColors(2,0) = \"#000000\":  strColors(2,1) = \"Black\"
    strColors(3,0) = \"#0000ff\":  strColors(3,1) = \"Blue\"
    strColors(4,0) = \"#008000\":  strColors(4,1) = \"Green\"
    strColors(5,0) = \"#c0c0c0\":  strColors(5,1) = \"Silver\"
    strColors(6,0) = \"#00ff00\":  strColors(6,1) = \"Lime\"
    strColors(7,0) = \"#808080\":  strColors(7,1) = \"Gray\"
    strColors(8,0) = \"#808000\":  strColors(8,1) = \"Olive\"
    strColors(9,0) = \"#800000\":  strColors(9,1) = \"Maroon\"
    strColors(10,0) = \"#000080\": strColors(10,1) = \"Navy\"
    strColors(11,0) = \"#ff0000\": strColors(11,1) = \"Red\"
    strColors(12,0) = \"#800080\": strColors(12,1) = \"Purple\"
    strColors(13,0) = \"#008080\": strColors(13,1) = \"Teal\"
    strColors(14,0) = \"#ff00ff\": strColors(14,1) = \"Fuchsia\"
    strColors(15,0) = \"#ffff00\": strColors(15,1) = \"Yellow\"
   
    \' Selectable Smileys
    strSmiley(0) = \":)\"
    strSmiley(1) = \":(\"
    strSmiley(2) = \";)\"
    strSmiley(3) = \":D\"
    strSmiley(4) = \":/\"
    strSmiley(5) = \":x\"
    strSmiley(6) = \":¨>\"
    strSmiley(7) = \":P\"
    strSmiley(8) = \":O\"
    strSmiley(9) = \"X(\"
    strSmiley(10) = \":>\"
    strSmiley(11) = \"B)\"
    strSmiley(12) = \"(:)\"
    strSmiley(13) = \"[:)\"
    strSmiley(14) = \"-:)\"
    strSmiley(15) = \":#\"
%>

                <select name=\"textcolor\" style=\"position: absolute; left: 220px; top: 54px; font-family: Tahoma, Arial; font-size: 8pt; width: 84px;\" onchange=\"frmControl.tempmessage.style.color=this.value; frmControl.cnt.style.color=this.value;\">
<%
                    For intIndex = 0 To UBound(strColors)
                        If strColors(intIndex, 0) = strColor Then strSel = \" selected\" Else strSel = \"\"
                        Response.Write \"                    <option value=\'\" & strColors(intIndex, 0) & \"\' style=\'color: \" & strColors(intIndex, 0) & \";\' \" & strSel & \">\" & strColors(intIndex, 1) & vbCrLf
                    Next
%>
                </select>

                <select name=\"smiley\" style=\"position: absolute; left: 365px; top: 54px; font-family: Tahoma, Arial; font-size: 8pt; width: 45px;\" onchange=\"frmControl.tempmessage.value=frmControl.tempmessage.value+\' \'+this.value; this.selectedIndex=0;\">
                    <option value=\'\'>(S)
<%
                    For intIndex = 0 To UBound(strSmiley)
                        Response.Write \"                    <option value=\'\" & strSmiley(intIndex) & \"\'>\" & strSmiley(intIndex) & vbCrLf
                    Next
%>
                </select>
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 10:26 #15
\"Du får ikke points før jeg har fattet det:) \" *LOL* jeg går snart i seng (er kun omkring de 18 timer nu ..)
Avatar billede madrich Nybegynder
31. marts 2001 - 10:34 #16

Response.Write \"  <option value=\'\" & strSmiley(intIndex) & \"\'>\" & strSmiley(intIndex) & vbCrLf

giver da sammer resultat som

sql = \"select _smileys_ from _tabelnavn\"
set rs = connection.execute(sql)

do while not rs.eof

strOption = strOption & \"<option value=\" & rs(\"_smileys_\") & \"</option>\"

rs.movenext
loop


Eller hva\' (altså hvis dine smiley\'s havde været i _tabelnavn_ under kolonnen _smileys_) ??



                   
Avatar billede madrich Nybegynder
31. marts 2001 - 10:35 #17
For intIndex = 0 To UBound(strSmiley)
                        Response.Write \"                    <option value=\'\" & strSmiley(intIndex) & \"\'>\" & strSmiley(intIndex) & vbCrLf
                    Next

ikke bare:

Response.Write \"                    <option value=\'\" & strSmiley(intIndex) & \"\'>\" & strSmiley(intIndex) & vbCrLf
                   
Avatar billede madrich Nybegynder
31. marts 2001 - 10:38 #18
Hvorfor så al det besvær med at skrive så meget pjat i koden
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 10:38 #19
ja .. det gør det (det med database tingen) men så skal dui lave en database forbindelse og det tager tid på serveren. Så er det meget hurtigere med et array.

Et array kan også oprettes f.eks. vha.

Split() eller

arrNoget = Array(\"Mandag\", \"Tirsdag\" ..)
så vil arrNoget få ligeså mange elementer som du skriver strenge .. (7 strenge = 6 elementer (0-6))
og det kan så bruges med:

<%=arrNoget(Day(Date))%>

nedenstående laver en løkke der udskriver ALLE elementer
For intIndex = 0 To UBound(strSmiley)
                        Response.Write \"                    <option value=\'\" & strSmiley(intIndex) & \"\'>\" & strSmiley(intIndex) & vbCrLf
                    Next

nedenstående udskriver kun element #0 (hvis ikke intIndex er sat til noget andet)

Response.Write \"                    <option value=\'\" & strSmiley(intIndex) & \"\'>\" & strSmiley(intIndex) & vbCrLf
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 10:40 #20
madrich:> her er hvad du gør:

1. Går i seng og sover ~16-20 timer (det kan man godt!)
2. Når du så står op fortsætter vi hvor vi slap ;o)

*LOL*
Avatar billede madrich Nybegynder
31. marts 2001 - 10:41 #21
Jamen Jamen jeg nåede at rette det!!!
se kommentar under

Avatar billede tdaugaard Nybegynder
31. marts 2001 - 10:43 #22
hæ hæ .. så du forstår lidt af det nu ?
Avatar billede madrich Nybegynder
31. marts 2001 - 10:44 #23
Jeg forstår stadig ikke helt hvorfor man gør det, med mindre man ikke kan lide baser, ens kode må da blive utrolig lang, hvis man bruger Arrays til at lave bare mere end en ting (reelt skriver man jo dataen direkte i ASP scriptet og ikke som DATAbase indikerer i DATAbasen!!)

Jeg har nu fattet Arrays!

Arrays er lig DATA i ASP-scriptet
Avatar billede madrich Nybegynder
31. marts 2001 - 10:45 #24
og ikke som DATAbase indikerer i DATAbasen!!)

Se det er sort snak, det jeg ville frem til var at Data hører til DATAbaser og script til i scripts
Avatar billede madrich Nybegynder
31. marts 2001 - 10:49 #25
Og Arrays skal Dimensioneres ellers virker de ikke (man skal fortælle serveren at der findes nogle variabler i scriptet)
--> andre variabler behøves ikke, for de er variabler der trækkes fra et andet sted og så kan serverFar godt regne ud at de er variabler, da han skal trække dem ud af DatabaseMor
Avatar billede madrich Nybegynder
31. marts 2001 - 10:49 #26
Points (the hard way) ---> Tdaugaard
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 11:15 #27
*GG*

Du kan nok ikke se fordelen nu, men der er faktisk en rent performance mæssigt.

Hvis jeg skulle lægge min smileys og farver som jeg viste dig her, i min database så skulle jeg åbne DB\'en HVER gang siden reloades ..det tager tid ogg er mere besværligt end med et array når je ikke skal kunne skifte smiley\'erne og farverne ud.

Det er jo kun DER er det er en fordel at have det i en database hvis du har brug for at ændre det tit.
Avatar billede tdaugaard Nybegynder
31. marts 2001 - 11:19 #28
sorry .. der var lige en der ringede (en kvinde oven i købet) :o)
Avatar billede burningice Nybegynder
01. april 2001 - 17:01 #29
meget interresant læsning... men det omhandlede jo kun dim i forbindelse med array

hvorfor bruge man f.eks. dim i følgende sætning

dim dag, uge, tal

dag = request.querystring(\"dag\")
uge = request.form(\"uge\")
tal = rs(\"tal\")

eneste brugbare jeg kan bruge dim til er hvis jeg feks. senere skal rette i scriptet, så kan jeg hurtig se hvilke værdi\'er der er variable (altså dag, uge og tal)
Avatar billede madrich Nybegynder
01. april 2001 - 21:46 #30
Det er rart at jeg ikke er den eneste der havde spgm til Dim\'s funktion i ASP, grunden til at Arrays kom op, var at der I det tilfælde, så havde DIM en funktion (man kan ikke benytte arrays uden først at have dimensioneret dem! - åbentbart), i andre tilfælde kan serveren godt finde ud af at der er tale om variabler, og derfor er det vel kun god kodeskik at dimensionere dem!
Avatar billede tdaugaard Nybegynder
01. april 2001 - 22:00 #31
cyberfessor:>

Dim har ikke nogen umiddelbar brugbar funktion når ikke det er til at Dimensionere et array.
Avatar billede madrich Nybegynder
02. april 2001 - 00:37 #32
>>> Tdaugaard - var det ikk\' det jeg havde skrevet:)

forresten har jeg ret i at det er god kodeskik at dimensionere sine variabler?
Avatar billede tdaugaard Nybegynder
02. april 2001 - 00:41 #33
madrich:> jeg postede min kommentar før jeg så din (hvilken jeg først lige har set nu *g*)

men der er NOGLE der siger at de er god programmerings skik at Dim\'e sine variabler, men jeg synes det bliver for meget hvis man, som jeg nogle gange gør, bruger en frygtelig masse variabler
Avatar billede madrich Nybegynder
02. april 2001 - 00:44 #34
Hvad med serverbelastning (især hvis man har en masse variabler), så må serveren da arbejde mere med at identificere variabler end hvis man har \"identificeret\" dem for den?

og det er vel derfor at det er god kodeskik at dimensionere sine variabler

Avatar billede tdaugaard Nybegynder
02. april 2001 - 00:46 #35
madrich:> nææ faktisk ikke.

Dim minvar

\"minvar\" er nu Null.
---

minvar = \"noget\"

\"minvar\" indeholder nu \"noget\"

der er ingen forskel, andet end at serveren \"opretter\" hukommelses plads til variablerne med det samme med Dim.
Avatar billede dreyfusdk Nybegynder
20. januar 2007 - 23:26 #36
Sikke en gammel gammel tråd... jeg tillader mig lige at vække den til live igen, ved at spørge, nu når vi taler variabler - om der nogen, der ligesom mig oplever at ens variabler "forsvinder"


Hvis jeg fx. har lavet en code ala:

firstname = "Peter"
lastname = "Jensen"

og man så i sit script prøver at sammensætte det til <%=firstname%> <%=lastname%>

.... at den så returnerer kun fornavnet, altså: "Peter "

Jeg oplever det engangi imellem på min server, og det er super frustrerende. Det er meget "random" den gør det. Hvad kan det skyldes?
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 23:31 #37
Hvis du gør det i en  <input type=text value=<%=firstname%> <%=lastname%> > så er det din egen skyld. Det skal være
<input type=text value="<%=firstname%> <%=lastname%>" >
og så også en tur igennem server.htmlencode:
<input type=text value="<%=server.htmlencode(firstname)%> <%=server.htmlencode(lastname)%>" >
Avatar billede dreyfusdk Nybegynder
20. januar 2007 - 23:35 #38
Hvis bare, det var så enkelt...

Nej det er desværre når jeg udskriver det som tekst på siden - også når det er variabler der ikke indeholder tekster (jeg bruger måske 50+ variabler på mit site, da det kører flere forskellige sprog hvor jeg udskfiter variabler afhængig af sproget, for at kunne beholde den samme ene kode alle sprog igennem - derfor er der en del variabler)
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 23:37 #39
Det sker i hvert fald ikke "random" - det er stadigvæk din egen skyld. Men der er da ikke nogen, der i 2007 bruger gammeldags ASP til noget??
Avatar billede dreyfusdk Nybegynder
20. januar 2007 - 23:39 #40
Hvor arrogant og ubrugligt et svar? Men jo, det er der.
Avatar billede erikjacobsen Ekspert
20. januar 2007 - 23:41 #41
Ja, og du stiller et ubrugeligt spørsmål ;) Variabler forsvinder ikke bare. End ikke i gammeldags ASP...
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