Avatar billede tzag_dk Nybegynder
13. maj 2005 - 13:44 Der er 12 kommentarer og
1 løsning

plus i et array

Hej

Jeg har dette stykke kode:

ListAntal = session("antal")
arrListAntal = Split(ListAntal,"#")

For i = LBound(arrListAntal) to UBound(arrListAntal)
AntalCount = CInt(AntalCount) + CInt(arrListAntal(i))
Next

Problemet er at jeg får denne fejl:
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CInt'

/cart.asp, line 32


Linje 32 er:
AntalCount = CInt(AntalCount) + CInt(arrListAntal(i))


Jeg kan ikke se hvorfor at den laver fejl?

På Forhånd tak :o)
// Rene
Avatar billede ksoren Nybegynder
13. maj 2005 - 14:31 #1
Hvis du forsøger at konvertere noget som ikke kan repræsenteres som en integer, så opstår den fejl
Avatar billede busschou Praktikant
13. maj 2005 - 15:02 #2
Så den fejl kan opstå hvis der i din session står noget som ikke er tal
Jeg ved ikke om den så også kan opstå fordi første gang du kører den så er AntalCount "ingenting" , så måske
--
AntalCount = 0
For i = LBound(arrListAntal) to UBound(arrListAntal)
AntalCount = CInt(AntalCount) + CInt(arrListAntal(i))
Next
Avatar billede tzag_dk Nybegynder
13. maj 2005 - 16:08 #3
Det er tal der er i arrListAntal.

busschou >>
Den laver stadigvæk den samme fejl når jeg bruger din.

Jeg kan fint udskrive den sådan her:
For i = LBound(arrListAntal) to UBound(arrListAntal)
response.write(arrListAntal(CInt(i))&"<br>")
Next
Avatar billede busschou Praktikant
13. maj 2005 - 16:14 #4
der er jo også forskel på om du tager CInt(i) eller CInt(arrListAntal(i)) ;o)
Har du prøvet
AntalCount = AntalCount + arrListAntal(i)
eller
AntalCount = AntalCount + CInt(arrListAntal(i))
Avatar billede tzag_dk Nybegynder
13. maj 2005 - 16:17 #5
Ja det har jeg.

Hvis jeg laver den med denne:
AntalCount = AntalCount + arrListAntal(i)
Får jeg dette output: 1122 (der skulle stå 33)

Hvis jeg laver den med denne:
AntalCount = AntalCount + CInt(arrListAntal(i))
Får jeg fejlen :(
Avatar billede tzag_dk Nybegynder
13. maj 2005 - 16:23 #6
Jeg poster lige hele koden :o)

<%
if request.QueryString("add") = "true" then

    productID = CInt(request.QueryString("productID"))
    antal = CInt(request.QueryString("antal"))

        session("antal") = session("antal") & "#" & antal
        session("productID") = session("productID") & "#" & productID
   
    response.Redirect("cart.asp")

end if


if session("antal") <= CInt("0") OR session("antal") = "" then
    arrAntal = "Indløbskurven er tom!"
else

                ListAntal = session("antal")
                arrListAntal = Split(ListAntal,"#")

            AntalCount = 0
            For i = CInt(LBound(arrListAntal)) to CInt(UBound(arrListAntal))
                AntalCount = AntalCount + CInt(arrListAntal(i))
            Next

    arrAntal = "Antal vare: " & AntalCount

end if


response.Write(arrAntal)
%>
Avatar billede busschou Praktikant
13. maj 2005 - 16:26 #7
Egentlig forstår jeg slet ikke hvad du gør ;o)
--
if session("antal") <= CInt("0") OR session("antal") = "" then
--
Hvis session("antal") = 1#2#4#5
Hvordan kan man så spørge om 1#2#4#5 <= 0 ?
Avatar billede tzag_dk Nybegynder
13. maj 2005 - 16:32 #8
hehe... Det har du jo ret i :o)
Så den skal vel bare se sådan her ud?

if session("antal") = "" then
Avatar billede busschou Praktikant
13. maj 2005 - 16:34 #9
Ja hvis session("antal") er "tom" hvis der ikke er noget :o)
En anden ting er at CInt på LBound og UBound burde være overflødig. For de returnerer jo størrelsen på dit array, og den størrelse er altid et heltal
Jeg undrer mig over den reagerer som den gør, for gør den ikke hos mig ..hmm
Avatar billede busschou Praktikant
13. maj 2005 - 16:37 #10
Kan det være fordi din session("antal") er tom til at starte med
Så når du laver denne
session("antal") = session("antal") & "#" & antal
Så bliver den i virkeligheden til session("antal") = #1#2#3#4
Når du så laver en split så får du et array('','1','2','3','4')
Den første i det array laver du CInt('') på...måske det går galt?
prøv rette
session("antal") = session("antal") & "#" & antal
til
if session("antal") = "" then
session("antal") = antal
else
session("antal") = session("antal") & "#" & antal
end if
Avatar billede tzag_dk Nybegynder
13. maj 2005 - 16:38 #11
Nu er den rettet til:

For i = LBound(arrListAntal) to UBound(arrListAntal)
AntalCount = AntalCount + CInt(arrListAntal(i))
Next

Men stadigvæk samme fejl... Jeg kan heller ikke forstå at det ikke vil virke! Det er en IIS server den køre på. Kan det være at der er en fejl på serveren?
Avatar billede tzag_dk Nybegynder
13. maj 2005 - 16:41 #12
Det var lige det sidste der skulle til :o)
Det virker som det skal nu! Mange tak for hjælpen og god weekend.

// Rene
Avatar billede busschou Praktikant
13. maj 2005 - 16:41 #13
det var så lidt og i lige måde da :o)
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