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