Avatar billede hitman3k Nybegynder
10. april 2008 - 14:14 Der er 10 kommentarer og
1 løsning

kan ikke se fejl: Error 13

hej X.

Jeg kan ikke se fejlen i denne kode:

Public Sub Hentlat(Data As Variant)
Dim Linje As Variant, I As Integer, Uddata As Variant
    Linje = Split(Data, "$")
    For I = 0 To UBound(Linje)
        If Left(Linje(I), 5) = "GPGGA2" Then
        Uddata = Split(Linje(I), ",")
    Exit For
        End If
    Next
    msg = "Uddata("
    For I = 0 To UBound(Uddata)
    msg = msg & I & ") = " & Uddata(I) & vbCrLf & "Uddata("
    Next
    msg = Left(msg, Len(msg) - 7)
    MsgBox msg
End Sub

Text Felte hvor den skal hente data i ser dataen sådan ud:


$GPGGA0,GPGGA
$GPGGA1,121332.517
$GPGGA2,5654.6017
$GPGGA3,N
$GPGGA4,00940.9492
$GPGGA5,E
$GPGGA6,0
$GPGGA7,00
$GPGGA8,50.0
$GPGGA9,86.7
$GPGGA10,M
$GPGGA11,42.6
$GPGGA12,M
$GPGGA13,0.0
$GPGGA14,0000*75


SKirv hvis der er mere du vil have..
Avatar billede hitman3k Nybegynder
10. april 2008 - 14:15 #1
Jeg får fejlen:

Run-time error '13':

Type Mismatch
Avatar billede hitman3k Nybegynder
10. april 2008 - 14:15 #2
skal lige siges jeg kun skal bruge den linje der hedder $GPGGA2
Avatar billede Slettet bruger
10. april 2008 - 14:56 #3
Split(Data, "$") Data er defineret som et object Split forventer en string
Avatar billede Slettet bruger
10. april 2008 - 14:58 #4
hmm underligt, jeg copy paste din kode ind visual studio og den omdøbte selv variant om til object så se bort fra min komentar
Avatar billede sjh Nybegynder
10. april 2008 - 16:46 #5
måske du skulle tælle hvor mange bogstaver og tal der står i din if linje:

If Left(Linje(I), 5) = "GPGGA2" Then

måske det var 6 og ikke 5 der skulle stå.. ;)

If Left(Linje(I), 6) = "GPGGA2" Then
Avatar billede kabbak Professor
10. april 2008 - 21:00 #6
ifølge oplysninger givet her http://www.eksperten.dk/spm/826796

skal det være

If Left(Linje(I), 5) = "GPGGA" Then
Avatar billede sjh Nybegynder
10. april 2008 - 22:20 #7
kabbak:
måske.. men det kan jeg jo ikke vide når hitman3k skriver et to tal med.. og så giver det da 6 ??
Avatar billede kabbak Professor
10. april 2008 - 23:46 #8
korrekt, men beskrivelsen af inputtet, passer ikke med koden her
Avatar billede sjh Nybegynder
11. april 2008 - 03:03 #9
jamen så er det vel bare at smide loopet ind under IF...


Option Explicit

Private Sub Command1_Click()
  Call Hentlat(Text1.Text)
End Sub

Public Sub Hentlat(strData As String)
Dim i As Long
Dim j As Long
Dim strMsg As String
Dim strLine As String
Dim arrData() As String
Dim arrLine() As String

  arrLine = Split(strData, "$")
  For i = LBound(arrLine) To UBound(arrLine)
 
    strLine = arrLine(i)
    If Left$(strLine, 5) = "GPGGA" Then
   
      arrData = Split(strLine, ",")
      strMsg = "Uddata("
     
      For j = LBound(arrData) To UBound(arrData)
        strMsg = strMsg & j & ") = " & arrData(j) & vbCrLf & "Uddata("
      Next
     
      strMsg = Left$(strMsg, Len(strMsg) - 7)
      MsgBox strMsg
     
      Exit For
    End If
   
  Next

End Sub
Avatar billede hitman3k Nybegynder
11. april 2008 - 14:48 #10
hehe sjh det var det som var min fejl, men det var sjovt jeg havde det til at virke onsdag aften, men så om natten genstarte min com, også var mit project væk :( så viste bare ikke hvad der skt da jeg lave det om :P men nu virker det :D takker læg et svr :P
Avatar billede sjh Nybegynder
11. april 2008 - 20:15 #11
svar..
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