iOS Question Weird substring2 bug...

Discussion in 'iOS Questions' started by techknight, Jun 21, 2015.

  1. techknight

    techknight Well-Known Member Licensed User

    I am running into a weird bug with iOS. It may be in android as well, I havent tested.

    I am sitting here testing my packet receive/parsing routine for robustness, and it failed of course. With this weird bug:

    Let a string called RxPacket be this:

    RxPacket = "01A00304"

    This is a string representing hex data, but its still a string...

    So, Given the VB function of this:

    Code:
    TestLength = HexString(Mid(RxPacket, 32)) 'Send Length byte  <--- Returns "A0" which
    causes a crash of:

    CRASH: Line 597 Cannot parse: A0

    Line 597 is the Return Text.Substring2 from my Mid subroutine.

    Now figure this: If I change A0, to 9F or smaller, It doesnt crash! it works fine. But >9F causes crash.

    Keep in mind this is all technically "strings" at this point, Substring2 should function regardless of the data inside.

    Subroutine Mid:

    Code:
    Sub Mid(Text As String, Start As Int, Length As Int) As String
        
    Return Text.SubString2(Start-1,Start+Length-1)
    End Sub

    Sub HexString(Number As Byte) As String
    Dim retVal As String
    Dim retByte(0+1As Byte
    Dim Convert As ByteConverter

    retByte(
    0) = Number

    retVal = Convert.HexFromBytes(retByte)

    Return retVal
    End Sub
    any ideas? I know I am passing a string into a byte with HexString, but I changed it to Val, same error...
     
    Last edited: Jun 21, 2015
  2. imbault

    imbault Well-Known Member Licensed User

  3. techknight

    techknight Well-Known Member Licensed User

    The only thing I got to work was ParseInt. But either way, thats strange....
     
  4. techknight

    techknight Well-Known Member Licensed User

    Another thing that I need to figure out is this:

    RxPacket = RxPacket & BytesToString(Buffer, 0, Buffer.Length, "UTF8")

    This is my receive routine, But I need to test and make sure the data coming in is ACTUALLY a string... Because, if I send random bytes the program crashes: Error decoding data as string.

    So, hmm....
     
  5. techknight

    techknight Well-Known Member Licensed User

    Nevermind, that was a simple fix. Had to make sure there was no byte in the buffer greater than 7F or 127, or the UTF8 thing barks and bursts into flames.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice