Avatar billede tblaster Nybegynder
03. august 2005 - 12:35 Der er 33 kommentarer og
1 løsning

Problemer med definering af variabel

Hejsa

Jeg har et problem med at definer en varriable i min kode. Min kode ser ud som følgende:

TabelTop = "<table width=""100%"">"
TabelTop = TabelTop & "<tr>"
<...>

Hvis jeg ikke definer noget, altså som i ovenstående så får jeg følgende besked:
Microsoft VBScript compilation error '800a01f4'
Variable is undefined: 'TabelTop'

Hvis jeg så tilføjer en 'dim TabelTop' som det første på min side så får jeg nu følgende:
Microsoft VBScript compilation error '800a0411'
Name redefined
dim TabelTop
----^

Jeg kan ikke lige se hvad jeg ellers kan gøre for at definer variablen. Det skal nævnes at min side bliver inkluderet på en anden side, hvor jeg så trækker på variablen fra. Men jeg har ikke defineret en variabel med navn TabelTop på nogen af mine andre sider. Er der nogen der kan hjælpe?
Avatar billede nielle Nybegynder
03. august 2005 - 12:38 #1
Måske har du en dim til længere nede på din side?
Avatar billede tblaster Nybegynder
03. august 2005 - 12:39 #2
Nope ... på den pågældende side er der pt. ingen dims. Desuden har jeg lavet en søgning på alle mine asp sider og jeg har ingen dim TabelTop.
Avatar billede nielle Nybegynder
03. august 2005 - 12:41 #3
Måske includer du en anden side hvor der så er dims på?
Avatar billede busschou Praktikant
03. august 2005 - 12:41 #4
og du har ikke en som hedder tabelTop eller lignende ? altså ingen case sensitive
Avatar billede tblaster Nybegynder
03. august 2005 - 12:42 #5
Jeg kan se at hvis jeg definer mine variable på den side hvor jeg inkluder min side så er der ingen problemer. Er det normalt at man skal dette?
Avatar billede busschou Praktikant
03. august 2005 - 12:42 #6
Du kan jo uanset hvad så bruge redim , bare vær opmærksom på at hvis du har den et andet sted
Avatar billede tblaster Nybegynder
03. august 2005 - 12:43 #7
Min søgning er lavet så den ikke er case sensitive så jeg har ingen dim på en tabeltop nogen steder i mine koder.
Avatar billede busschou Praktikant
03. august 2005 - 12:44 #8
det burde ikke betyde noget hvor du Dim´er dem, bare du gør det før du bruger dem
Avatar billede nielle Nybegynder
03. august 2005 - 12:44 #9
Hvis du bruger en variabel på tvæs af flere sider (som f.eks. når du includer) så skal den dim'es.
Avatar billede tblaster Nybegynder
03. august 2005 - 12:46 #10
Hvis jeg bruger en redim, hvad skal jeg så have stående i min ()?

redim TabelTop giver:
Microsoft VBScript compilation error '800a03ea'
Syntax error
redim TabelTop()
Avatar billede softspot Forsker
03. august 2005 - 13:51 #11
nielle >> man skal vel dimensionere en variabel hvis du bruger Option Explicit...
Avatar billede softspot Forsker
03. august 2005 - 14:40 #12
...og der skulla have stået:

"det er vel KUN nødvendigt at dimensionere en variabel hvis man bruger Option Explicit"...
Avatar billede tblaster Nybegynder
03. august 2005 - 16:26 #13
jeg bruger option explicit ... ellers får jeg jo ikke de fejl jeg får!
Avatar billede nielle Nybegynder
03. august 2005 - 17:56 #14
softspot> Jeg bruger altid Option Explicit - det er en super god ide af så mange forskellige årsager.

tblaster> Det burde kun være nødvendigt at bruge dim. Redim er mere beregnet på at ændre størrelsen af en allerede dim'et variabel. Som udgangspunkt skal en variabel dim'es før at den bruges første gang.
Avatar billede tblaster Nybegynder
03. august 2005 - 18:08 #15
ja og det er jo derfor at jeg prøver at dimme den. Men det er jo lidt underligt at jeg skal dimme den på en anden side som så inkluder den pågældende side.
Avatar billede softspot Forsker
03. august 2005 - 18:39 #16
rooolig nu... det var såmænd det lidt generaliserende udsagn: "Hvis du bruger en variabel på tvæs af flere sider (som f.eks. når du includer) så skal den dim'es." jeg var lidt ude efter, ikke hvorvidt du skulle dimensionere eller ej. Jeg er såmænd også tilhænger af Option Explicit og dimensionering af variable inden man kaster sig over brugen af dem (det andet kræver jo disciplin ;)).

Umiddelbart vil jeg jo anbefale, at du erklærer variablen der hvor den opstår, dvs. der hvor den får sin værdi, for det er jo stedet hvor den starter sit liv. Så burde du ikke få dette problem, med mindre du inkluderer siden hvor den opstår EFTER du prøver at aflæse den. Ud over det så skal den naturligvis erklæres globalt (altså ikke i en funktion), for ellers vil den jo kun eksistere i funktionens scope og forsvinde når funktionen slutter.

Hvis du kunne prøve at skitsere strukturen af din kode lidt mere udførligt, ville det være lettere at se hvor fejlen evt. kunne opstå, for jeg er overbevist om at det har noget med sekvens og struktur at gøre, men altså svært at gennemskue med det materiale vi har set indtil videre...
Avatar billede nielle Nybegynder
03. august 2005 - 19:38 #17
softspot> Jeg er skam både rolig og afslappet - no fuzz, none at all. :^)

@}-`-,---
Avatar billede softspot Forsker
03. august 2005 - 19:50 #18
Ja, men tblaster lyder lidt... utålmodig :)
Avatar billede tblaster Nybegynder
03. august 2005 - 20:14 #19
Det vil jeg nu ikke sige ... det er ihvertifald ikke sådan min(e) beskeder skal opfanges!
Avatar billede softspot Forsker
03. august 2005 - 20:17 #20
Ok, det er nok brugen af udråbstegn der forvirrer mig ;)
Avatar billede tblaster Nybegynder
03. august 2005 - 20:24 #21
Nåh ... dem er jeg god til at bruge!
Avatar billede busschou Praktikant
03. august 2005 - 20:26 #22
godt så !!!! ;o)
Avatar billede softspot Forsker
03. august 2005 - 20:40 #23
Ja, jeg har godt lagt mærke til at folk bruger det tegn lidt "skødesløst" af og til - det har karakter af udråb (sjovt nok ret sammenfaldende med navnet af tegnet :)).

Men hey! Det kan da godt være jeg lægger for meget betydning i det... skal se om jeg kan skrue ned for min opfattelse af udråbstegn :)

Anyway! Kom du videre med selve problemet?
Avatar billede tblaster Nybegynder
03. august 2005 - 20:48 #24
Ikke andet end at jeg kan løse det hele ved at lave alle min dim'er på den side hvor jeg inkluder den nævnte kode. Det er jo ikke den mest optimale løsning men kan ikke få den til at lade mig lave en dim på siden på andre måder.
Avatar billede softspot Forsker
03. august 2005 - 20:57 #25
Hmmm... det lyder spøjst at du ikke kan dimensionere dine variable der hvor de opstår og få det til at fungere. Kan du evt. vise lidt mere struktur?
Avatar billede tblaster Nybegynder
03. august 2005 - 21:06 #26
Kan da prøve. Jeg har en side index.asp hvor jeg inkluder en side jeg kalder for design.asp. Design.asp indeholder den stump kode jeg har vist øverst på siden og det er på denne side at jeg ikke kan lave en dim. Jeg kan tilgengæld godt lave en dim lige inden jeg inkluder design.asp på min index.asp side.

Giver det et størrere overblik, ellers må du spørge lidt mere precist til hvad du vil høre omkring strukturen.
Avatar billede softspot Forsker
03. august 2005 - 21:16 #27
Dvs. kode kunne se nogenlunde således ud...

index.asp:
----------
<%@ language="VBscript" %>
<% Option Explicit %>
<!-- #include file="design.asp" -->
<html>
<head>...</head>
<body>
kald noget kode som er defineret i design.asp, f.eks. en variabel med noget prægenereret html...
<%=TabelTop%>
<tr><td>bla</td><td>blaaah</td></tr>
<tr><td>bla</td><td>blaaah</td></tr>
<tr><td>bla</td><td>blaaah</td></tr>
<%=TabelBund%>
</body>
</html>

design.asp:
-----------

<%
Dim TabelTop
Dim TabelBund
TabelTop = "<table align=""center"" border=""0"" cellspacing=""0"" cellpadding=""0"">"
TabelBund = "</table>"
%>

og det fungerer så ikke, eller har jeg misforstået noget...?
Avatar billede tblaster Nybegynder
03. august 2005 - 22:11 #28
Yep opbygningen er som du skriver.
Avatar billede softspot Forsker
03. august 2005 - 22:25 #29
ok, det fungerer fint her hos mig...?

Kan du pege på de ting som er anderledes hos dig?
Avatar billede tblaster Nybegynder
03. august 2005 - 22:37 #30
min design.asp fil ser således ud:

TabelTop = "<table width=""100%"">"
TabelTop = TabelTop & "<tr>"

Det er sådan set de ting jeg kan se der er forskellige.
Avatar billede softspot Forsker
03. august 2005 - 22:49 #31
Hmmm... meeeeeget mystisk! Og din include står helt i top i index.asp lige efter option explicit?

Hvis du har lyst kan du prøve at paste scriptkoden af dine sider ind, det kan være der er en lille finurlig fejl som vi ikke finder hvis vi bare snakker form på dette abstrakte niveau...
Avatar billede tblaster Nybegynder
21. oktober 2005 - 09:10 #32
smid et svar softspot så jeg kan lukke dette spørgsmål
Avatar billede softspot Forsker
21. oktober 2005 - 09:17 #33
OK, men hvis du ikke fik svar på dit spørgsmål, så synes jeg du skal tage dem tilbage... :)

I øvrigt så skal der vel ikke være en <tr> i design.asp

TabelTop = "<table width=""100%"">"
DEN DER ===>  TabelTop = TabelTop & "<tr>"


hvis index.asp har dette format (for så er der jo to <tr> i starten af tabellen):


index.asp:
----------
<%@ language="VBscript" %>
<% Option Explicit %>
<!-- #include file="design.asp" -->
<html>
<head>...</head>
<body>
kald noget kode som er defineret i design.asp, f.eks. en variabel med noget prægenereret html...
<%=TabelTop%>
<tr><td>bla</td><td>blaaah</td></tr>
<tr><td>bla</td><td>blaaah</td></tr>
<tr><td>bla</td><td>blaaah</td></tr>
<%=TabelBund%>
</body>
</html>
Avatar billede softspot Forsker
21. oktober 2005 - 09:52 #34
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