Toon posts:

[ASP] Dim functie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik doe nu al een tijdje asp alleen 1 ding blijf ik niet snappen, het Dim gebeuren

Als ik een stukje code als dit heb:

code:
1
2
3
Option Explicit
testvar = "bla"
Dim testvar


Of

code:
1
2
3
4
5
Option Explicit
If 1 = 2 Then
  Dim testvar
End If
testvar = "bla"


Dan moet er eigelijk een foutmelding te komen omdat de variable nog niet gedimt (lekker woord) is maar dit is niet het geval!

Mijn vraag, betekent dit nu dat alle Dim's altijd worden uitgevoerd voordat de pagina geladen wordt of is "Option Explicit" gewoon bugy?

Als alle Dim's van te vooren worden uitgevoerd zou ik altijd alle Dim's boven aan de pagina kunnen zetten zonder performance verlies, Als ik nu een variable alleen in een If lus gebruik dan dim ik hem ook daar.

Verwijderd

http://msdn.microsoft.com...variablesandconstants.asp

... The Option Explicit statement must appear after any ASP directives and before any HTML text or script commands....

Verwijderd

Topicstarter
Thx voor je reply!

Ik snap het alleen nog niet helemaal..

Als ik de zin zo leest betekent het volgens mij dat je alle Dim's bovenaan moet zetten.. ?

Verwijderd

Lees niet alleen de zin, maar ook het hele artikel ! ( link staat erbij )

Je kunt in VB,VBA en VBS declaraties overal in je code zetten, maar good programming practice is variabelen bovenin het stuk code waarin ze gebruikt worden ( module, sub, function ) te declareren. Dat maakt je code een stuk leesbaarder en beter onderhoudbaar.

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

Verwijderd schreef op 15 mei 2004 @ 18:06:
Lees niet alleen de zin, maar ook het hele artikel ! ( link staat erbij )

Je kunt in VB,VBA en VBS declaraties overal in je code zetten, maar good programming practice is variabelen bovenin het stuk code waarin ze gebruikt worden ( module, sub, function ) te declareren. Dat maakt je code een stuk leesbaarder en beter onderhoudbaar.
Ik denk dat dit toch meer persoonlijk is dan een guideline. Vooral bij kleine pagina`s kan het ook overzichtelijk zijn om de variablen allemaal bovenin de pagina te declareren (mits goed geordend natuurlijk)....imo

Verwijderd

Topicstarter
Heb het hele artikel gelezen maar het gaf geen antwoord op mijn vraag.

Als ik :
code:
1
2
3
Option Explicit
if 1 = 2 then dim i
i = 2


Dan zou ik een error moeten krijgen om dat i niet gedimt is toch?

Tenzij! hij hem altijd dimt ookal staat hij in een If die niet uitgevoerd wordt of Option Explicit werkt niet goed...

Dus heeft alle dims bovenaan de pagina zetten het zelfde effect als ze in de if lussen te zetten waar ze gebruikt worden?

Dimen var variable kost parse time (niet veel maar toch) en als je ze niet gebruikt omdat een variable alleen in een if gebruikt wordt lijkt mij het zinloos hem toch te dimmen tenzij Dims altijd worden uitgevoerd ook als ze in een If staat niet die uitgevoerd wordt...

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je hebt gelijk. Dim wordt ongeacht het IF statement uitgevoerd. Hmm, het lijkt inderdaad dat je alle dims net zo goed bovenaan kunt zetten.

Ik zou het trouwens sowieso doen, die nanoseconde dat het extra kost weegt volgens mijn nie top tegen leesbaarheid en onderhoudbaarheid van je code.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

Voor diegenen die wat uitleg willen er over.. :)
A Dim statement is always executed, even if it is inside a code section that isn't. This is because the Dim statements are executed first when compiling to reserve the required memory. For example, this will give you a "Name Redefined" error:

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

gorgi_19 schreef op 16 mei 2004 @ 15:11:
A Dim statement is always executed, even if it is inside a code section that isn't.
[...]
Ehm, geldt dat ook voor VB.NET? Ik heb gegoogled, maar kon er niets over vinden....

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

CaptBiele schreef op 17 mei 2004 @ 09:09:
[...]


Ehm, geldt dat ook voor VB.NET? Ik heb gegoogled, maar kon er niets over vinden....
Waarom zou het in VB.NET anders zijn? En wat weerhoudt je om het te testen? ;)

'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.


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 14:07

mulder

ik spuug op het trottoir

.NET heeft een andere scope voor variabelen dan VBScript. Dit zou niet moeten compileren, in iedere geval niet in C#.

oogjes open, snaveltjes dicht


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Er zijn volgens mij twee mogelijke verklaringen voor dit gedrag.
Mogelijkheid 1: De interpreter wandelt eerst de code door op zoek naar Dim statements en voert deze uit. Vervolgens wordt de code pas "echt" uitgevoerd.

Mogelijkheid 2: De Option Explicit checkt alleen maar of de variabele ergens in het blok code wordt gedeclareerd en het maakt niet uit waar dat werkelijk gebeurt.

Oh en Dim staat voor Dimension, oftewel dimensie geven aan de variabele.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

bigbeng schreef op 17 mei 2004 @ 10:43:
Er zijn volgens mij twee mogelijke verklaringen voor dit gedrag.
Mogelijkheid 1: De interpreter wandelt eerst de code door op zoek naar Dim statements en voert deze uit. Vervolgens wordt de code pas "echt" uitgevoerd.

Mogelijkheid 2: De Option Explicit checkt alleen maar of de variabele ergens in het blok code wordt gedeclareerd en het maakt niet uit waar dat werkelijk gebeurt.

Oh en Dim staat voor Dimension, oftewel dimensie geven aan de variabele.
gorgi_19 in [ASP] Dim functie? :P

'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.


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

NMe84 schreef op 17 mei 2004 @ 10:25:
[...]

Waarom zou het in VB.NET anders zijn? En wat weerhoudt je om het te testen? ;)
als jij mij vertelt hoe, dan test ik het zelf... 8)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 24-05 14:53

NMe

Quia Ego Sic Dico.

CaptBiele schreef op 17 mei 2004 @ 12:28:
[...]


als jij mij vertelt hoe, dan test ik het zelf... 8)
Zie topicstart? :P

'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.


  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 23-05 16:11

CaptBiele

No Worries!

NMe84 schreef op 17 mei 2004 @ 12:35:
[...]

Zie topicstart? :P
bleh... lol :Z

Ok, in VB.NET worden dus NIET alle DIM`s vantevoren uitgevoerd!
Pagina: 1