/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Underlig sub fejl?
Fra : Matthias


Dato : 24-12-05 02:50

Hej, på forhånd tak for din hjælp.

Jeg har noget kode som jeg ikke kan få til at sige "Hello world"
Selvom den egentlig burde..!
Hvad gør jeg forkert?
Altså har prøvet mig frem til at message bliver glemt når "call"
kommer fra inde i subbet.

Følgende kode skal bare kunne sige "hello world", hvorfor vil den
ikke det.

<%
call checkpoint
sub checkpoint
check = "yes"
if hej = "yes" then
message = "Hello world"
end if

call say
end sub

sub say
Response.Write(message)
end sub
%>

Mvh. Matthias

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jørn Andersen (24-12-2005)
Kommentar
Fra : Jørn Andersen


Dato : 24-12-05 05:29

On 24 Dec 2005 01:50:24 GMT, Matthias <capone_mh@noreply.com> wrote:

Hej Matthias,

>Jeg har noget kode som jeg ikke kan få til at sige "Hello world"
>Selvom den egentlig burde..!
>Hvad gør jeg forkert?
>Altså har prøvet mig frem til at message bliver glemt når "call"
>kommer fra inde i subbet.

1. Hvor bliver 'hej' sat til "yes"?
2. Hvor kender 'say' variablen message fra?
(Sæt:
Dim message
udenfor begge subs)

>Følgende kode skal bare kunne sige "hello world", hvorfor vil den
>ikke det.
>
><%
>call checkpoint
>sub checkpoint
>check = "yes"
> if hej = "yes" then
> message = "Hello world"
> end if
>
>call say
>end sub
>
>sub say
>Response.Write(message)
>end sub
>%>


Good luck!

--
Jørn Andersen,
Brønshøj

Matthias (24-12-2005)
Kommentar
Fra : Matthias


Dato : 24-12-05 11:33

<%
call checkpoint
sub checkpoint
check = "yes"
if check = "yes" then
message = "Hello world"
end if
call say
end sub

sub say
Response.Write(message)
end sub
%>

Men hvorfor kan ovenstående ikke lade sig gøre. Går message bare
tabt??
Er der andre måder man kan gøre ovenstående på så, evt. med
funtion??


jamen (24-12-2005)
Kommentar
Fra : jamen


Dato : 24-12-05 13:04

Matthias wrote:
> <%
> call checkpoint
> sub checkpoint
> check = "yes"
> if check = "yes" then
> message = "Hello world"
> end if
> call say
> end sub
>
> sub say
> Response.Write(message)
> end sub
> %>
>
> Men hvorfor kan ovenstående ikke lade sig gøre. Går message bare
> tabt??
> Er der andre måder man kan gøre ovenstående på så, evt. med
> funtion??


Hvis der ikke er erklæret en global variabel med samme navn, vil
variablen være lokal til din checkpoint-sub

Dim message
call checkpoint
....

vil virke. Men normalt vil man nok lave den med parametre:

Call say("Hello world")

Sub say(msg)
   Response.Write msg
End Sub

Jørn Andersen (24-12-2005)
Kommentar
Fra : Jørn Andersen


Dato : 24-12-05 13:18

On Sat, 24 Dec 2005 13:04:12 +0100, jamen <jamen@invalid> wrote:

>Dim message
>call checkpoint
>...
>
>vil virke. Men normalt vil man nok lave den med parametre:
>
>Call say("Hello world")
>
>Sub say(msg)
>   Response.Write msg
>End Sub

Eller:
Call say(message)
(inde i første Sub)

Sub say(msg)
   Response.Write msg
End Sub

- som også vil virke, selv om message ikke er Dim'et globalt - fordi
message kun bruges inde i den første Sub, men derfra overføres den som
parameter til den anden Sub, hvorfor den ikke skal defineres explicit.

Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Jørn Andersen (24-12-2005)
Kommentar
Fra : Jørn Andersen


Dato : 24-12-05 13:10

On 24 Dec 2005 02:33:00 -0800, "Matthias" <Matthias.HH@gmail.com>
wrote:

><%
>call checkpoint
>sub checkpoint
>check = "yes"
> if check = "yes" then
> message = "Hello world"
> end if
>call say
>end sub
>
>sub say
>Response.Write(message)
>end sub
>%>
>
>Men hvorfor kan ovenstående ikke lade sig gøre. Går message bare
>tabt??

Ja, det kan man godt sige. Variable eksisterer kun inden for det
scope, hvor de er defineret.

I dit tilfælde har du ikke explicit defineret nogle variable (med
Dim), men variablen 'message' bliver "taget i brug" inde i sub'en
'checkpoint', og den opfattes derfor som om den er defieneret inde i
sub'en - og den eksisterer derfor kun inde i sub'en.

>Er der andre måder man kan gøre ovenstående på så, evt. med
>funtion??

Det eneste du skal gøre er at skrive:
Dim message
på den allerførste linie (altså inden 'call checkpoint')
Så skulle det virke - fordi variablen nu er defineret "globalt" i
forhold til din ASP-side. Dvs. den eksisterer på hele siden, og subs
etc. kan tilgå den.

Må jeg i øvrigt anbefale at bruge 'Option Explicit', se:
<url: http://www.asp-faq.dk/article/?id=9>
- den tvinger dig til at definere dine variable, og dermed også til at
tage stilling til *hvor* de skal defineres.
Selv om du måske ikke er alt for sikker på, hvor de skal defineres
henne, så gør du det tydeligt for både dig selv og andre, hvor de *er*
defineret henne og dermed også lettere at finde fejl.

Håber det hjalp lidt, ellers spørg igen.



Good luck!

--
Jørn Andersen,
Brønshøj

Matthias (24-12-2005)
Kommentar
Fra : Matthias


Dato : 24-12-05 18:11

Tak for jeres svar, har forstået det nu, og har fået det til at
virke.


God jul allesammen!


Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408514
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste