Results 1 to 9 of 9

Thread: [RESOLVED] RichTextBox find extract ?

  1. #1

    Thread Starter
    Hyperactive Member
    Join Date
    Mar 2006
    Posts
    282

    Resolved [RESOLVED] RichTextBox find extract ?

    Ok I receive info info in my richtectbox and it look's like this

    Code:
    Progress.....: 3264512000000/1000000000000000 (12.33%)
    HW.Monitor.#1: 99% GHW, 76c Temp
    HW.Monitor.#2: 98% GHW, 72c Temp
    HW.Monitor.#3: 97% GHW, 75c Temp
    HW.Monitor.#4: 96% GHW, 65c Temp
    what I need only is percentage (12.33) to be extracted to txt1

    from HW.Monitor#1 only temp as value "76" to txt2
    from HW.Monitor#2 only temp as value "72" to txt3
    from HW.Monitor#3 only temp as value "75" to txt4
    from HW.Monitor#4 only temp as value "65" to txt5

  2. #2
    Fanatic Member
    Join Date
    Mar 2009
    Posts
    804

    Re: RichTextBox find extract ?

    Hmm, just some string manipulation:
    Code:
    Private Sub Form_Load()
     Dim Arr() As String
     Dim Txt As String
     Dim i As Long
     Dim op As Long
     Dim cp As Long
     Txt = "Progress.....: 3264512000000/1000000000000000 (12.33%)" & vbNewLine & _
          "HW.Monitor.#1: 99% GHW, 76c Temp" & vbNewLine & _
          "HW.Monitor.#2: 98% GHW, 72c Temp" & vbNewLine & _
          "HW.Monitor.#3: 97% GHW, 75c Temp" & vbNewLine & _
          "HW.Monitor.#4: 96% GHW, 65c Temp"
     Arr = Split(Txt, vbNewLine)
     op = InStrRev(Arr(0), "(")
     cp = InStr(op + 1, Arr(0), ")")
     Debug.Print Mid$(Arr(0), op + 1, cp - op - 2)
     For i = 1 To UBound(Arr)
      Debug.Print Left$(Split(Arr(i))(3), 2)
     Next
    End Sub

  3. #3
    Former Admin/Moderator MartinLiss's Avatar
    Join Date
    Sep 1999
    Location
    San Jose, CA
    Posts
    33,431

    Re: RichTextBox find extract ?

    The code would be shorter if your textboxes were a control array

    VB Code:
    1. Dim lngPos1 As Long
    2.     Dim lngPos2 As Long
    3.    
    4.     lngPos1 = InStr(1, RichTextBox1.Text, "%")
    5.     lngPos2 = InStrRev(RichTextBox1.Text, "(", lngPos1)
    6.     Txt1.Text = Mid$(RichTextBox1.Text, lngPos2 + 1, lngPos1 - lngPos2 - 1)
    7.    
    8.     lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
    9.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    10.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    11.     Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    12.    
    13.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    14.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    15.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    16.     Txt3.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    17.    
    18.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    19.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    20.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    21.     Txt4.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    22.    
    23.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    24.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    25.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    26.     Txt5.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)

  4. #4

    Thread Starter
    Hyperactive Member
    Join Date
    Mar 2006
    Posts
    282

    Re: RichTextBox find extract ?

    But i receive more info in my richtextbox, I want only to extract temp value and progress !
    So need to find only this line and extract thouse value.
    I try with your code but not working correctly

  5. #5

    Thread Starter
    Hyperactive Member
    Join Date
    Mar 2006
    Posts
    282

    Re: RichTextBox find extract ?

    Quote Originally Posted by MartinLiss View Post
    The code would be shorter if your textboxes were a control array

    VB Code:
    1. Dim lngPos1 As Long
    2.     Dim lngPos2 As Long
    3.    
    4.     lngPos1 = InStr(1, RichTextBox1.Text, "%")
    5.     lngPos2 = InStrRev(RichTextBox1.Text, "(", lngPos1)
    6.     Txt1.Text = Mid$(RichTextBox1.Text, lngPos2 + 1, lngPos1 - lngPos2 - 1)
    7.    
    8.     lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
    9.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    10.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    11.     Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    12.    
    13.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    14.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    15.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    16.     Txt3.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    17.    
    18.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    19.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    20.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    21.     Txt4.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    22.    
    23.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    24.     lngPos1 = lngPos1 + Len("GHW, ") - 1
    25.     lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    26.     Txt5.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    I just checked again, your code working fine, but what about if I
    have only

    Code:
    Progress.....: 3264512000000/1000000000000000 (12.33%)
    HW.Monitor.#1: 99% GHW, 76c Temp
    HW.Monitor.#2: 98% GHW, 72c Temp
    or

    Code:
    Progress.....: 3264512000000/1000000000000000 (12.33%)
    HW.Monitor.#1: 99% GHW, 76c Temp
    HW.Monitor.#2: 98% GHW, 72c Temp
    HW.Monitor.#3: 97% GHW, 75c Temp
    when I receive info or only 1

    Code:
    Progress.....: 3264512000000/1000000000000000 (12.33%)
    HW.Monitor.#1: 99% GHW, 76c Temp
    so how many HW.Monitor lines will find only for them to extract value's
    max is 4 GHW
    Last edited by VB Client/Server; May 15th, 2011 at 10:16 AM.

  6. #6
    Former Admin/Moderator MartinLiss's Avatar
    Join Date
    Sep 1999
    Location
    San Jose, CA
    Posts
    33,431

    Re: RichTextBox find extract ?

    For txt2, 3, 4, and 5 do


    Code:
        
    lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
    If lngPos1 > 0 Then
            lngPos1 = lngPos1 + Len("GHW, ") - 1
            lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
            Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
        End If

  7. #7

    Thread Starter
    Hyperactive Member
    Join Date
    Mar 2006
    Posts
    282

    Re: RichTextBox find extract ?

    Quote Originally Posted by MartinLiss View Post
    For txt2, 3, 4, and 5 do


    Code:
        
    lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
    If lngPos1 > 0 Then
            lngPos1 = lngPos1 + Len("GHW, ") - 1
            lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
            Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
        End If
    hm, can U add full code, seems I missing something

  8. #8
    Former Admin/Moderator MartinLiss's Avatar
    Join Date
    Sep 1999
    Location
    San Jose, CA
    Posts
    33,431

    Re: RichTextBox find extract ?

    VB Code:
    1. Dim lngPos1 As Long
    2.     Dim lngPos2 As Long
    3.    
    4.     lngPos1 = InStr(1, RichTextBox1.Text, "%")
    5.     lngPos2 = InStrRev(RichTextBox1.Text, "(", lngPos1)
    6.     Txt1.Text = Mid$(RichTextBox1.Text, lngPos2 + 1, lngPos1 - lngPos2 - 1)
    7.    
    8.     lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
    9.     If lngPos1 > 0 Then
    10.         lngPos1 = lngPos1 + Len("GHW, ") - 1
    11.         lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    12.         Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    13.     End If
    14.    
    15.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    16.     If lngPos1 > 0 Then
    17.         lngPos1 = lngPos1 + Len("GHW, ") - 1
    18.         lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    19.         Txt3.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    20.     End If
    21.    
    22.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    23.     If lngPos1 > 0 Then
    24.         lngPos1 = lngPos1 + Len("GHW, ") - 1
    25.         lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    26.         Txt4.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    27.     End If
    28.    
    29.     lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
    30.     If lngPos1 > 0 Then
    31.         lngPos1 = lngPos1 + Len("GHW, ") - 1
    32.         lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
    33.         Txt5.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
    34.     End If

  9. #9

    Thread Starter
    Hyperactive Member
    Join Date
    Mar 2006
    Posts
    282

    Re: RichTextBox find extract ?

    Thx, working great!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width