Toon posts:

[ASP] Variabele uit sub werkt niet in de rest van de code*

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ok, dit is mijn probleem:

Ik heb een ASP pagina, waarin hetvolgende staat (voorbeeld is versimpeld)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
Sub psTest
  Dim lsMystring 
  
  lsMystring = "Hello World" 

End Sub
%>

<html><head></head><body>

<%
Call psTest

Response.Write lsMystring
%>
</body></html>



De variabele lsMystring is leeg wanneer ik deze pagina bekijk. Wat doe ik verkeerd? Ik wil geen sessie-variabele gebruiken...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

lsMystring is een lokale variabele die alleen maar in die Sub geldig is. Lees eens wat over variabelen en hun scopes.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Ullie
  • Registratie: December 2004
  • Niet online
Probeer de variabele eens buiten de sub de declareren. Dus zo:

code:
1
2
3
4
5
6
7
<%

Dim lsMystring

Sub psTest

...

Verwijderd

Topicstarter
Thx Ullie, dat werkt!!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Heb je enig idee waarom het werkt?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
@-NMe-:

inmiddels weet ik waarom ja, mijn interpretatie van het fenomeen "sub" klopte niet.

[ Voor 66% gewijzigd door Verwijderd op 29-06-2005 14:46 ]


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 13:14
dat ga je dan in elke programmeertaal tegenkomen.

ik zou dit ter harte nemen:
-NMe- schreef op woensdag 29 juni 2005 @ 14:15:
lsMystring is een lokale variabele die alleen maar in die Sub geldig is. Lees eens wat over variabelen en hun scopes.

Everyday's an endless stream, of cigarettes and magazines...


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
Kijk ook eens naar Byref en ByVal aangezien in VBscript alle vars binnen subs en function standaard bij reference worden mee gegeven, en dat is gedrag dat je alleen in specifieke gevallen wilt.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Mooier is natuurlijk een byref parameter, of gewoon een return waarde gebruiken...

日本!🎌


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Verwijderd schreef op woensdag 29 juni 2005 @ 14:43:
@-NMe-:

inmiddels weet ik waarom ja, mijn interpretatie van het fenomeen "sub" klopte niet.
Nu wel?

Sub en Function moet je "los" zien van de rest van de code. Wat je probeert te doen is imho erg smerig, en ook nog eens heel onduidelijk. Als je zoiets wilt zou ik je eerder adviseren een Function te maken die een String terug geeft, of de Sub in de uitvoer te laten schrijven.

zoals je het nu doet ga je je gegarandeerd over een paar maanden verwonderen hoe die "Hello World" toch in die variabele terecht komt. Zeker als je een stapje verder komt met ASP en met includes e.d. gaat werken.

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Het gebruiken van Option Explicit zou je hier ook op gewezen hebben.

Verwijderd

als ik jou was zou ik een functie gebruiken! Daarmee kan je iets terug geven. De code zal er dus ongeveer zo uit zien:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
Function psTest() As String
  Dim lsMystring 
  
  lsMystring = "Hello World" 
  Return lsMystring 
End Function 
%>

<html><head></head><body>

<%
Response.Write psTest
%>
</body></html>

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Verwijderd schreef op donderdag 30 juni 2005 @ 15:07:
Visual Basic:
1
  Return lsMystring 
Moet worden
Visual Basic:
1
psTest = lsMystring


Return gebruik je in ASP om na een fout terug te keren, zoals

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Blaat()

  On Error goto Foutje

  Dim i as long, q as long

  i=5
  q=0
  i = i / q

  Exit Sub

  Foutje:
  q=2 ' Delen door nul is moelijk hè, CPU'tje?
  Return

End Sub

[ Voor 3% gewijzigd door CodeCaster op 30-06-2005 15:26 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 12:34

mulder

ik spuug op het trottoir

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Blaat()

  On Error goto Foutje

  Dim i as long, q as long

  i=5
  q=0
  i = i / q

  Exit Sub

  Foutje:
  q=2 ' Delen door nul is moelijk hè, CPU'tje?
  Return

End Sub

Bovenstaande werkt NIET in VBScript.

edit: voor mensen die niet weten wat bovenstaand is ;)

[ Voor 80% gewijzigd door mulder op 30-06-2005 16:13 ]

oogjes open, snaveltjes dicht


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Don Facundo schreef op donderdag 30 juni 2005 @ 15:37:
Bovenstaande werkt NIET in VBScript.
Zie je die Quote knop rechtsboven de post waar je op reageert? Gebruik die, dan snappen wij ook wat je bedoelt, welke code er niet werkt.

[ Voor 6% gewijzigd door zneek op 30-06-2005 15:56 ]


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

CodeCaster schreef op donderdag 30 juni 2005 @ 15:26:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Blaat()

  On Error goto Foutje

  Dim i as long, q as long

  i=5
  q=0
  i = i / q

  Exit Sub

  Foutje:
  q=2 ' Delen door nul is moelijk hè, CPU'tje?
  Return

End Sub
Dit werkt wel ;)
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Blaat()
  On Error Resume Next
  Err.Number = 0

  Dim i, q 
  i=5
  q=0
  i = i / q

  If( Err.Number <> 0 ) Then
    q=2 ' Delen door nul is moelijk hè, CPU'tje?
  End If  
End Sub

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.

Pagina: 1