Toon posts:

[ASP] array (matrix) aanpassen met een functie

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

Verwijderd

Topicstarter
Ik probeer een array met een function te bewerken, echter een probleem

pagina1.asp
ASP.NET Visual Basic:
1
2
3
4
5
6
7
<!--#include file="libarray.asp"-->

<%
Dim arrLijst()

Call addItem(arrLijst)
%>



libarray.asp
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
<!--#include file="libarray.asp"-->

<%
Function addItem(arrLijst)
  ReDim Preserve arrLijst(UBound(arrLijst))
  arrLijst(UBound(arrLijst) = 1
End Function
%>


maar hierbij krijg ik een melding dat de matrix geblokkeerd is, weet iemand een manier om dit wel te doen?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Waarbij krijg je die melding? Bij het ReDimmen, of misschien al bij het aanroepen van addItem...? Of pas wanneer je een waarde aan het toegevoegde item wil toekennen?

Verder include je in libarray.asp het bestand libarray.asp...?

My personal website


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 15-05 14:44

_Thanatos_

Ja, en kaal

de haakjes bij "Dim arrLijst()" weghalen, dan werkt het volgens mij :)

日本!🎌


Verwijderd

Topicstarter
Dit is mijn code, die ik gebruik

code:
1
2
3
4
5
6
7
8
9
Function fnAddItem(arrMenu, naam)
    Redim Preserve arrMenu(UBound(arrMenu))
    arrMenu(UBound(arrMenu)) = naam
End Function


Dim arrMenu(0)

Call fnAddItem(arrMenu, "Toevoegen")


geeft als resultaat:
code:
1
2
Runtimefout Microsoft VBScript (0x800A000A)
Deze matrix ligt vast of is tijdelijk vergrendeld.

  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 27-04 16:49
Je functie gebruikt deze array als je pagina, waardoor er binnen je pagina volgens mij een soort lock wordt gezet op je variabele.

Ik zit maar wat in het wild te coden, maar volgens mij moet het er zoiets uit komen te zien:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'Altijd kijken of je je variabelen wel goed hebt gezet:
Option Explicit

Dim arrMenu

'Je mag een sub gebruiken hier:
'Een functie geeft namelijk een waarde terug
'Een subroutine niet, die voert code uit 
'waarna de aanroepende programmatuur verder gaat.

Public Sub AddItem(strNaam)
    ReDim arrMenu(UBound(arrMenu)+1)
    arrMenu(UBound(arrMenu)) = strNaam
End Sub

Call AddItem(arrMenu, "Toevoegen")

Weet niet of het werkt, kan niet testen hiero, maar je moet maar zeggen of het werkt of niet...

Volgens mij heeft een array in ASP nog het nadeel dat als-ie wordt ge-ReDim-d (nieuw nederlands) hij al z'n originele waardes verliest. Dit kan je oplossen door een tijdelijke array te creeren die 1 rij groter is, waarna je de oude kopieert in de nieuwe en de nieuwe waarde toevoegt en vervolgens de nieuwe array teruggeeft als resultaat van je functie (in dat geval moet je dus een functie hebben).


Suc7

[ Voor 23% gewijzigd door JJvG op 12-02-2004 15:45 ]