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