[ASP] Scripting.Dictionary probleem met remove functie

Pagina: 1
Acties:

  • JGame
  • Registratie: April 2001
  • Laatst online: 22-11-2025
Ik heb een probleem met de remove function in Scripting.Dictionary object.
Als ik de remove functie aanroep dan word dat het element niet verwijderd, maar gewist. Ik heb mijn probleem tot de volgende code weten terug te brengen:

Dim Namen
Dim t

Set Namen=CreateObject("Scripting.Dictionary")

Namen.Add "Naam_0", "Jan"
Namen.Add "Naam_1", "Joop"
Namen.Add "Naam_2", "Piet"
Namen.Add "Naam_3", "Klaas"

Namen.Remove("Naam_1")

For t = 0 to Namen.Count -1
Response.Write "Naam (" & t & "): " & Namen.Item("Naam_" & CStr(t)) & "<br>"
Next

Als output krijg ik dan:

Naam (0): Jan
Naam (1):
Naam (2): Piet

terwijl het gewenste resultaat natuurlijk is:

Naam (0): Jan
Naam (1): Piet
Naam (2): Klaas

Heeft iemand een idee wat ik fout doe, of is dit nu eenmaal de werking van dit opject. Als dat het geval is er dan iemand die een ander object weet met dezelf functionaliteit die it wel doet.

Programming is like having sex: One little mistake and you have to support it for the rest of your life.


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

Namen.Item("Naam_" & CStr(t)) geeft op die plek namen.item("naam_1")

die heb je gewist en dus is de output daar leeg :)

edit:
misschien zoek je zoiets:
ASP:
1
2
3
for each t in namen.items
    response.write(t & "<BR>")
next

[ Voor 40% gewijzigd door j_du_pee op 14-08-2003 12:34 ]

kaart != map && bottel != fles
Wacht op antwoord


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Andere vraag: Waarom wil je hier het dictionary object voor gebruiken? Aan de data te zien is het niet echt een 'hashmap / hashtable'

array lijkt me voldoende

[ Voor 14% gewijzigd door gorgi_19 op 14-08-2003 12:34 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 21-08 10:50
JGame schreef op 14 augustus 2003 @ 12:22:
Als dat het geval is er dan iemand die een ander object weet met dezelf functionaliteit die it wel doet.
zoals gorgi zegt... een array is ruim voldoende... is overbodig om helemaal een object aan te roepen.

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


  • JohanDM
  • Registratie: Augustus 2002
  • Laatst online: 16-07-2021

JohanDM

Optimist

Het Dictionary object is geeft altijd een returnwaarde wanneer je een item opvraagt, als het item niet (meer) bestaat, geeft hij Empty als returnwaarde wat resulteert in een lege string.
Om te weten of een key in je dictionary zit moet je de Exists functie gebruiken.
ASP:
1
2
3
4
5
For t = 0 to Namen.Count -1
  If Namen.Exists("Naam_" & CStr(t)) Then
    Response.Write "Naam (" & t & "): " & Namen.Item("Naam_" & CStr(t)) & "<br>"
  End If
Next

"Two things are infinite: the universe and stupidity. And the former I'm not so sure about." -- Albert Einstein


  • JGame
  • Registratie: April 2001
  • Laatst online: 22-11-2025
Bedankt voor jullie reacties ik heb het als volgt opgelost:


For Each Naam In Namen
Response.Write Naam & "): " & Namen.Item(Naam) & "<br>"
Next

Het voorbeeld van j_du_pee geeft namelijk de keyname terug.
Bedankt voor de reacties.

[ Voor 12% gewijzigd door JGame op 14-08-2003 13:38 ]

Programming is like having sex: One little mistake and you have to support it for the rest of your life.

Pagina: 1