|
| Type mismatch i array Fra : Kurt G |
Dato : 22-06-09 12:51 |
|
Jeg får følgende fejl
Type mismatch: 'MenuArray(...)'
/Kladde/funktioner.asp, line 267
Koden ser låledes ud:
265 For y = 0 to AntalMenuer-1
266 If (MenuArray(y,0)= 0) Then
267 If (MenuArray(y+1,0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
268 Response.write "<li><a href='/" & MenuArray(y,1)& "'>" &
MenuArray(y,2) & "</a></li>"
269 End If
270 End If
272 Next
Jeg har også prøvet med
267 If (MenuArray((y+1),0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
samt
267 z = y+1
268 If (MenuArray(z,0 = 0) Then 'Felt0=0 efterfølges af Felt0=0
men det har ikke hjulpet.
Hvad har jeg gjort galt i linie 267 og hvorfor er der fejl i linie 267 når
linie 266 er ok?
Mvh Kurt
| |
Rune Jensen (22-06-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-06-09 14:19 |
|
Kurt G skrev:
> Jeg får følgende fejl
>
> Type mismatch: 'MenuArray(...)'
> /Kladde/funktioner.asp, line 267
> Koden ser låledes ud:
>
> 265 For y = 0 to AntalMenuer-1
> 266 If (MenuArray(y,0)= 0) Then
> 267 If (MenuArray(y+1,0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
> 268 Response.write "<li><a href='/" & MenuArray(y,1)& "'>" &
> MenuArray(y,2) & "</a></li>"
> 269 End If
> 270 End If
> 272 Next
OK
> Jeg har også prøvet med
> 267 If (MenuArray((y+1),0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
( og ) paranteser omkring et udtryk betyder, at alt indenfor disse skal
beregnes først.
Den første og sidste parantes er derfor ikke nødvendig, for det er det
samlede udtryk.
If MenuArray((y+1),0)= 0 Then
Og egentlig bør man kunne simplificere det yderligere, fordi y+1 står
for sig selv som et eget udtryk (igen), og vil kun kunne beregnes først
under alle omstændigheder.
If MenuArray(y+1,0)= 0 Then
Her er så et andet problem. Fordi arrays så vidt jeg ved ikke må være
todimensionale. Så MenuArray skal være en function, ikke et array, hvis
det skal give mening. Med andre ord, så mangler der nok lidt kode, for
det giver mening. Og hvis det er ment som et array, er det nok dér
problemet er. ...men du har ret, så skulle den også brokke sig i linje 266.
Eneste forskel på de to linjer, er y er en større i linje 267.
> samt
> 267 z = y+1
> 268 If (MenuArray(z,0 = 0) Then 'Felt0=0 efterfølges af Felt0=0
> men det har ikke hjulpet.
Den er også forkert af flere grunde, men bl.a. er der ikke lige mange
afsluttende paranteser, som begyndende. To (( men kun én )
Derudover, så blandes if-delens elementer med selve arrayets. Ved ikke
rigtigt, men ret sikker på det vil give fejl. Skulle måske have været
If MenuArray(z,0) = 0 Then
...under forudsætning af, MenuArray er en function.
> Hvad har jeg gjort galt i linie 267 og hvorfor er der fejl i linie 267 når
> linie 266 er ok?
Jeg tror det ville være interessant, hvordan MenuArray defineres.. Altså
den kode, som gør det.
;)
MVH
Rune Jensen
--
Nysgerrig efter at møde andre deltagere i webdesign nyhedsgrupperne?
http://webdesigngruppen.dk/
| |
Rune Jensen (22-06-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-06-09 14:27 |
|
Rune Jensen skrev:
> Her er så et andet problem. Fordi arrays så vidt jeg ved ikke må være
> todimensionale. Så MenuArray skal være en function, ikke et array, hvis
> det skal give mening. Med andre ord, så mangler der nok lidt kode, for
> det giver mening. Og hvis det er ment som et array, er det nok dér
> problemet er. ...men du har ret, så skulle den også brokke sig i linje 266.
Og bare for en god ordens skyld, har du så nogle on error resume next i
koden?
....lært af erfaring, det kan bringe problemer, hvis ikke brugt rigtigt.
MVH
Rune Jensen
| |
Kurt G (22-06-2009)
| Kommentar Fra : Kurt G |
Dato : 22-06-09 15:06 |
|
KLIPPET
>> Jeg har også prøvet med
>> 267 If (MenuArray((y+1),0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
>
> ( og ) paranteser omkring et udtryk betyder, at alt indenfor disse skal
> beregnes først.
Ja, det ved jeg godt, det var for at være helt sikker på, at det
beregningsmæssigt var i orden.
> Den første og sidste parantes er derfor ikke nødvendig, for det er det
> samlede udtryk.
>
> If MenuArray((y+1),0)= 0 Then
>
> Og egentlig bør man kunne simplificere det yderligere, fordi y+1 står for
> sig selv som et eget udtryk (igen), og vil kun kunne beregnes først under
> alle omstændigheder.
>
> If MenuArray(y+1,0)= 0 Then
Det var der, jeg startede!
>
> Her er så et andet problem. Fordi arrays så vidt jeg ved ikke må være
> todimensionale.
Vil det sige, at jeg bør hente tallene ud af MenuArray inden
sammenligningen?
> Så MenuArray skal være en function, ikke et array, hvis det skal give
> mening. Med andre ord, så mangler der nok lidt kode, for det giver mening.
> Og hvis det er ment som et array, er det nok dér problemet er. ...men du
> har ret, så skulle den også brokke sig i linje 266.
Det gør den også nu, efter at jeg har prøvet andre ting!
Klippet>
> Jeg tror det ville være interessant, hvordan MenuArray defineres.. Altså
> den kode, som gør det.
Dim Menutabel, MenuArray(3,100), AntalMenuer
Og data fyldes i array-et således:
'--- Overfør menuen til array ---
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("menutekst.txt")
Set f = fso.OpenTextFile(filespec,1)
AntalMenuer = 0
Do While not f.AtEndOfStream 'Indlæs menufilen i MenuArray
linie = f.ReadLine
If left(linie,2) <> "//" then
Menutabel= Split(linie,";")
For x = 0 to 2
MenuArray(x,AntalMenuer)= Menutabel(x)
Next
AntalMenuer = AntalMenuer+1
End If
Loop
f.Close 'Nu er filen indlæst i MenuArray
Mvh Kurt
| |
Stig Johansen (22-06-2009)
| Kommentar Fra : Stig Johansen |
Dato : 22-06-09 15:29 |
|
Kurt G wrote:
> Dim Menutabel, MenuArray(3,100), AntalMenuer
>
[snip]
> For x = 0 to 2
> MenuArray(x,AntalMenuer)= Menutabel(x)
> Next
> AntalMenuer = AntalMenuer+1
sammenlignet med:
> 265 For y = 0 to AntalMenuer-1
> 266 If (MenuArray(y,0)= 0) Then
> 267 If (MenuArray(y+1,0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
bytter du lidt om på dimensionerne.
Det skal nok være
If (MenuArray(0,y)= 0) Then
Derudover kommer du måske til at bruge 1 for meget ved y+1.
Hvis du f.eks kun har 1 i AntalMenuer, så er der kun et element(x,0) array,
og y+1, dvs. element(x,1) er udefineret.
--
Med venlig hilsen
Stig Johansen
| |
Kurt G (22-06-2009)
| Kommentar Fra : Kurt G |
Dato : 22-06-09 16:45 |
|
"Stig Johansen" <wopr.dk@gmaill.com> skrev i en meddelelse
news:4a3f95e4$0$48237$14726298@news.sunsite.dk...
> Kurt G wrote:
>
>> Dim Menutabel, MenuArray(3,100), AntalMenuer
>>
> [snip]
>> For x = 0 to 2
>> MenuArray(x,AntalMenuer)= Menutabel(x)
>> Next
>> AntalMenuer = AntalMenuer+1
>
> sammenlignet med:
>> 265 For y = 0 to AntalMenuer-1
>> 266 If (MenuArray(y,0)= 0) Then
>> 267 If (MenuArray(y+1,0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
>
> bytter du lidt om på dimensionerne.
> Det skal nok være
> If (MenuArray(0,y)= 0) Then
Det har jeg også lige selv fundet ud af, det skulle jeg have set lidt før.
> Derudover kommer du måske til at bruge 1 for meget ved y+1.
> Hvis du f.eks kun har 1 i AntalMenuer, så er der kun et element(x,0)
> array,
> og y+1, dvs. element(x,1) er udefineret.
>
> --
> Med venlig hilsen
> Stig Johansen
Ja, jeg bliver nødt til at lave et check for at y+1 ikke overstiger
AntalMenuer-1.
Tak for jeres hjælp!
Mvh Kurt
| |
Rune Jensen (22-06-2009)
| Kommentar Fra : Rune Jensen |
Dato : 22-06-09 16:46 |
|
Stig Johansen skrev:
> Kurt G wrote:
>
>> Dim Menutabel, MenuArray(3,100), AntalMenuer
>>
> [snip]
>> For x = 0 to 2
>> MenuArray(x,AntalMenuer)= Menutabel(x)
>> Next
>> AntalMenuer = AntalMenuer+1
>
> sammenlignet med:
>> 265 For y = 0 to AntalMenuer-1
>> 266 If (MenuArray(y,0)= 0) Then
>> 267 If (MenuArray(y+1,0)= 0) Then 'Felt0=0 efterfølges af Felt0=0
>
> bytter du lidt om på dimensionerne.
> Det skal nok være
> If (MenuArray(0,y)= 0) Then
>
> Derudover kommer du måske til at bruge 1 for meget ved y+1.
> Hvis du f.eks kun har 1 i AntalMenuer, så er der kun et element(x,0) array,
> og y+1, dvs. element(x,1) er udefineret.
Damn... Jeg vidste ikke man kan lave fler-dimensionale arrays...
Pinligt!
[Blushing red ears]
MVH
Rune Jensen
| |
|
|