Toon posts:

[ASP] uit functie springen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Khep een ASP functie en die zoekt een waarde binnen een dictionary, binnen deze dictionary kunnen weer andere dictionaries zitten, en deze worden ook doorzocht.

Nu wil ik als ie de waarde vind dat deze wordt teruggegeven en dat de functie stopt, alleen krijg ik het niet voor elkaar de functie te laten stoppen.

Volgens mij zou het "exit function" moeten zijn, maar als ik dat neerzet krijg ik geen error oid maar gaat ie gewoon vrolijk verder met de functie uitvoeren alsof er helemaal geen 'exit function' staat.

Iemand enig id hoe het wel moet?

Khep hier 3 ASP boeken van Wrox liggen en loos genoeg staat er bijna niets in over functies. :(

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
codu showu :)

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Function WriteDictValues(dictionary, searchValue)
 Set lDict = Server.CreateObject("Scripting.Dictionary")
 set lDict = dictionary

 For Each Key in lDict
   If ObjectType(lDict(key)) = "Scripting.Dictionary" then
     WriteDictValues lDict(key), searchValue
   Else
     if key = searchValue Then 
      strFoundValue = lDict(key)
      Response.Write "<BR><BR>HALLELUJA = " & strFoundValue & "<br><br>"
     End if
   End If 
 Next
End Function

  • disjfa
  • Registratie: April 2001
  • Laatst online: 12-05 15:11

disjfa

be

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function WriteDictValues(dictionary, searchValue)
   Set lDict = Server.CreateObject("Scripting.Dictionary")
   set lDict = dictionary
   For Each Key in lDict
    If ObjectType(lDict(key)) = "Scripting.Dictionary" then
       WriteDictValues lDict(key), searchValue
    Else
       if key = searchValue Then 
         strFoundValue = lDict(key)
         Response.Write "<BR><BR>HALLELUJA = " & strFoundValue  & "<br><br>"
       End if
    End If 
   Next
End Function

ziet er mooier uit :)

disjfa - disj·fa (meneer)
disjfa.nl


Verwijderd

Topicstarter
Functie werkt dus als volgt

als je hem aanroept en als parameters de Dictionary en de gewenste waarde opgeeft, dan gaat ie door de dictionary heenloopen totdat de waarde is gevonden of tot ie een andere dictionary tegenkomt, als ie een andere tegenkomt roept de functie zichzelf aan om door die andere dictionary heen te loopen, en daarna gaat ie weer verder met de 'basis' dictionary.

Als de waarde wordt gevonden schrijft ie nu dus Halleluja naar het scherm, dat werkt ook, maar dan moet ie stoppen.
2e probleem is trouwens dat ie de waarde niet teruggeeft, theoretisch als je zou zeggen

WriteDictValues = strFoundValue
dan zou de functie als waarde de gevonden waarde moeten teruggeven, doettie ook niet. Maar eerste probleem is dus dat ie uit de functie moet springen.

Verwijderd

Topicstarter
[b]Op dinsdag 13 november 2001 10:09 schreef disjfa
ziet er mooier uit :)
Als je nie zo snel zou reageren zou je zien da'k nog aan't editen was :P

snel manneke :P

Verwijderd

Topicstarter
hmmzz ok als ik dus het ifje zo aanpas
code:
1
2
3
4
5
if key = searchValue Then 
  strFoundValue = lDict(key)        
  WriteDictValues = strFoundValue
  exit function                 
End if

Dan nokt ie em dus uiteindelijk wel, maar de waarde krijg ik niet terug...

ben ik echt gek als ik verwacht dat dit een waarde teruggeeft?
code:
1
Response.Write "==>" & WriteDictValues(MyDictionary, "GewensteWaarde") & "<=="

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 12:17

Basszje

Reisvaap!]

Hij doet wel de exit function , maar doordat je je eigen functie recursief aanroept, weet je niet in welke 'iteratie' je precies je waarde vindt.

Met andere woorden, hij exit het zooitje wel , maar je roept meerdere keren (recursief) je functie aan , waardoor je functie op een ander stuk weer verder gaat.

Beetje vaag uitgelegd, maar ik hoop dat je het begrijpt.

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Kweet wat je bedoelt, zat ik ook al aan te denken, wacht ff, volgens mij klopte daar namelijk nog iets niet mee...

ff testen

brb :-)

[edit]
je hebt IDD gelijk

khep em nu dus trouwens wel zover dattie exit, ik krijg alleen de waarde niet terug (zie bovenstaande post)

  • Basszje
  • Registratie: Augustus 2000
  • Laatst online: 12:17

Basszje

Reisvaap!]

Doe je als volgt ( volgens mij ).

returnval = WriteDicValues( bla bla bla ) .

En dan pleur je op je hallaluja het woord in de return
( dus WriteDicValues = gevondenWoord ) .

en finally in je functie checken of die waarde al bestaat
( zelf ff kijken waar precies )
code:
1
2
3
4
if not returnval = "" then
 WriteDicValues = returnval
 exit function
end if

Als het goed is rolt ie hem dan netjes terug. Suc6.
( btw niet getest, tis maar een ideetje )

Beware of listening to the imposter; you are undone if you once forget that the fruits of the earth belong to us all, and the earth itself to nobody.


Verwijderd

Topicstarter
Hmmzz, denk dat et probleem weer met recursie te maken heeft, aangezien ik wel de waarden terugkrijg die in de basisdictionary zitten, maar als de waarde in de subDictionary zitten krijg ik niets terug.

ff verder zoeken...
Pagina: 1