Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VB6] Virhe "Type mismatch"

Kulma [26.11.2005 14:56:54]

#

Tulee "Type mismatch" ja VB valittaa kohtaa "If wsckimage.Tag <> 1 Then"
Mikä vikana?

Private Sub wsckImage_DataArrival(ByVal bytesTotal As Long)
Dim str$
If wsckimage.Tag <> 1 Then
    If Dir("Temp.jpg", vbNormal) <> "" Then
        Kill "Temp.jpg"
    End If
    Open "Temp.jpg" For Binary As #1
    wsckimage.Tag = 1
End If
wsckimage.GetData str, vbString, bytesTotal
Put #1, , str
If Right(str, 4) = "$END" Then
    wsckimage.Tag = 0
    Close #1
    imgImage.Picture = LoadPicture("Temp.jpg")
    wsckimage.SendData "ok"
End If
End Sub

setä [26.11.2005 15:32:58]

#

Onkohan nimi wsckimage varmasti oikein ?

Nannohiiri [26.11.2005 16:07:03]

#

EI :Dd0=D0D=D=

Hannu [26.11.2005 16:12:40]

#

Kulma kirjoitti:

Tulee "Type mismatch" ja VB valittaa kohtaa "If wsckimage.Tag <> 1 Then"
Mikä vikana?

Voisko olla vahingossa lainausmerkeissä se ykkönen (tai sitten jotain muuta kuin ykkönen) siellä wsckimage.Tag -ominaisuudessa? Sillon ainakin tulee "Type mismatch" jos on lainausmerkit siellä.

Blaze [26.11.2005 16:52:58]

#

Nannohiiri kirjoitti:

EI :Dd0=D0D=D=

Haluatko selittää?

Merri [26.11.2005 17:33:05]

#

Tässä lienee kyseessä "datatype coercion" -ongelma... eli jos Tag on vaikkapa tyhjä string, niin silloin sitä ei voi verrata numeroon ja syntyy virhe. Joten tämä ongelma korjaantuu yksinkertaisesti sillä, että muuntaa Tagin ensin numeroksi:

If Val(wsckimage.Tag) <> 1 Then

Kannattaa olla tarkkana muuttujatyyppien kanssa.

setä [26.11.2005 18:31:48]

#

Tosiaankin jos Tagille ei ole annettu arvoa, tulee juuri tuo virheilmoitus.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta