iOS Question Weird substring2 bug...

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

  1. techknight

    techknight Active 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 Active Member Licensed User

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

    techknight Active 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 Active 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...