Avatar billede drean Nybegynder
06. januar 2001 - 22:41 Der er 15 kommentarer og
2 løsninger

Arrayes ?? Hvordan med inde i hinanden ?

Hej
Jeg har et lille problem med denne kode:

LineArr = Split(MyApp, \"<:EOL:>\")
intLinjer = int(Ubound(LineArr))
For i = 0  to intLinjer
ThisLineArr = Split(LineArr(i), \"<:>\")
Response.Write(ThisLineArr(0))
Response.Write(ThisLineArr(1))
Response.Write(ThisLineArr(2))
Next

Så får jeg denne fejl:

Subscript out of range: \'[number: 0]\'

FEjlen ligger i når det er flere gange den skal køre denne kode igennem:

ThisLineArr = Split(LineArr(i), \"<:>\")
Response.Write(ThisLineArr(0))
Response.Write(ThisLineArr(1))
Response.Write(ThisLineArr(2))

Det er sikkert et eller andet med at det midlertidige Array skal resettes..men hvordan ?

______
Hvis jeg gør sådan:
For i = 0  to 0 \'eller var det 1 kan ikke huske
ThisLineArr = Split(LineArr(i), \"<:>\")
Response.Write(ThisLineArr(0))
Response.Write(ThisLineArr(1))
Response.Write(ThisLineArr(2))
Next

Så virker det fint :-|


Help me
Avatar billede netsrac Praktikant
06. januar 2001 - 22:45 #1
Prøv:

LineArr = Split(MyApp, \"<:EOL:>\")
for each item in lineArr
ThisLineArr = Split(LineArr(i), \"<:>\")
Response.Write(ThisLineArr(0))
Response.Write(ThisLineArr(1))
Response.Write(ThisLineArr(2))
Next
Avatar billede drean Nybegynder
06. januar 2001 - 22:52 #2
Det giver ihvertfald ikke en fejl, men blot et andet problem :-)
Nu brugte jeg jo i til at finde ud af hvor langt jeg var komme i løkken, det er der ikke mere, så kunne jeg jo gøre sådan her:

LineArr = Split(MyApp, \"<:EOL:>\")
i = 0
for each item in lineArr
ThisLineArr = Split(LineArr(i), \"<:>\")
Response.Write(ThisLineArr(0))
Response.Write(ThisLineArr(1))
Response.Write(ThisLineArr(2))
i = i +1
Next

Men så får jeg samme fejl som jeg først fik :-(

Jeg kunne forestille med det har noget med det dumme array inde i et array, og så det inderste
ThisLineArr Skal nulstilles eller sådan noget..
Avatar billede netsrac Praktikant
06. januar 2001 - 23:10 #3
Dooh...det skal jo selvfølgelig være sådan her :-)

LineArr = Split(MyApp, \"<:EOL:>\")
for each item in lineArr
ThisLineArr = Split(LineArr(item), \"<:>\")
Response.Write(ThisLineArr(0))
Response.Write(ThisLineArr(1))
Response.Write(ThisLineArr(2))
Next
Avatar billede tdaugaard Nybegynder
06. januar 2001 - 23:33 #4
hmm .. For Each .. In er nok ikke nødvendig.

Prøv med

LineArr = Split(MyApp, \"<:EOL:>\")
intLinjer = Ubound(LineArr) \' behøver ikke bruge Int da UBound() returnerer en talværdi
For i = 0  to intLinjer
  ThisLineArr = Split(LineArr(i), \"<:>\")

  If UBound(ThisLineArr) => 2 Then
    Response.Write(ThisLineArr(0))
    Response.Write(ThisLineArr(1))
    Response.Write(ThisLineArr(2))
  End If
Next
Avatar billede netsrac Praktikant
06. januar 2001 - 23:37 #5
tdaugaard >> Måske ikke nemmere men jeg synes nu det er mere overskueligt, desuden undgår du fejl på den måde:

LineArr = Split(MyApp, \"<:EOL:>\")
for each item in lineArr
ThisLineArr = Split(LineArr(item), \"<:>\")
for each item in ThisLineArr
Response.Write(ThisLineArr(item))
next
Next
Avatar billede netsrac Praktikant
06. januar 2001 - 23:38 #6
nemmere = nødvendigt :-)
Avatar billede tdaugaard Nybegynder
06. januar 2001 - 23:41 #7
hmm .. det kan du jo have ret i med den du kom med nu.
Avatar billede drean Nybegynder
06. januar 2001 - 23:59 #8
NetsRac...det giver mig følgende fejl:

Invalid \'for\' loop control variable

/chat/chatten.asp, line 16

for each item in ThisLineArr
--------------^
Avatar billede drean Nybegynder
07. januar 2001 - 00:00 #9
tdaugaard, det du skrev:

If UBound(ThisLineArr) => 2 Then
    Response.Write(ThisLineArr(0))
    Response.Write(ThisLineArr(1))
    Response.Write(ThisLineArr(2))

Jeg ved at der altid er 3 i det array...
Avatar billede netsrac Praktikant
07. januar 2001 - 00:03 #10
Må jeg godt se den streng som du starter med at splitte, tror der er en fejl i det..
Avatar billede netsrac Praktikant
07. januar 2001 - 00:06 #11
Den anden split indeholder vist ikke nogle strenge
Avatar billede drean Nybegynder
07. januar 2001 - 00:16 #12
Jow den gør...
Hvis jeg f.eks bruger denne:

LineArr = Split(convo, \"<:EOL:>\")
intLinjer = Ubound(LineArr)
For i = 0  to intLinjer
ThisLineArr = Split(LineArr(i), \"<:>\")
\'Response.Write(ThisLineArr(0))
\'Response.Write(ThisLineArr(1))
\'Response.Write(ThisLineArr(2))
Response.Write(LineArr(i))
Next

Så ville out puttet f.eks være:
LineArr(0) = Der var engang en lille mand<:>han boede i en spand<:>spanden var af ler
LineArr(1) = konen stod og vake\'d bler<:>nu kan jeg ikke mer<:>created by drean
Så ville convo strengen som først bliver splittet indeholde:
Der var engang en lille mand<:>han boede i en spand<:>spanden var af ler<:EOL:>konen stod og vake\'d bler<:>nu kan jeg ikke mer<:>created by drean<:EOL:>
Men det er måske der fejlen er...
Nu kommer jeg lige på noget *gg*
Avatar billede drean Nybegynder
07. januar 2001 - 00:17 #13
Så vil den sidste jo ikke indeholde noget :-))
Avatar billede drean Nybegynder
07. januar 2001 - 00:18 #14
Så skal jeg trække en fra :-)
Avatar billede drean Nybegynder
07. januar 2001 - 00:20 #15
hehe...dumme mig...nu har jeg siddet og brokket mit hovet over det i flere timer *gg*
Avatar billede netsrac Praktikant
07. januar 2001 - 00:20 #16
Den sidste efter <:EOL:> Indeholder jo ikke noget, så den kan ikke splittes, den indeholder altså ikke noget som jeg sagde :-)
Avatar billede drean Nybegynder
07. januar 2001 - 00:23 #17
Ja...bare mig som ikke tænker mig om...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester