[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
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
Re: RichTextBox find extract ?
The code would be shorter if your textboxes were a control array
VB Code:
Dim lngPos1 As Long
Dim lngPos2 As Long
lngPos1 = InStr(1, RichTextBox1.Text, "%")
lngPos2 = InStrRev(RichTextBox1.Text, "(", lngPos1)
Txt1.Text = Mid$(RichTextBox1.Text, lngPos2 + 1, lngPos1 - lngPos2 - 1)
lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt3.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt4.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt5.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
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 :(
Re: RichTextBox find extract ?
Quote:
Originally Posted by
MartinLiss
The code would be shorter if your textboxes were a control array
VB Code:
Dim lngPos1 As Long
Dim lngPos2 As Long
lngPos1 = InStr(1, RichTextBox1.Text, "%")
lngPos2 = InStrRev(RichTextBox1.Text, "(", lngPos1)
Txt1.Text = Mid$(RichTextBox1.Text, lngPos2 + 1, lngPos1 - lngPos2 - 1)
lngPos1 = InStr(1, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt2.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt3.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt4.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
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
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
Re: RichTextBox find extract ?
Quote:
Originally Posted by
MartinLiss
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
Re: RichTextBox find extract ?
VB Code:
Dim lngPos1 As Long
Dim lngPos2 As Long
lngPos1 = InStr(1, RichTextBox1.Text, "%")
lngPos2 = InStrRev(RichTextBox1.Text, "(", lngPos1)
Txt1.Text = Mid$(RichTextBox1.Text, lngPos2 + 1, lngPos1 - lngPos2 - 1)
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
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
If lngPos1 > 0 Then
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt3.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
End If
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
If lngPos1 > 0 Then
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt4.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
End If
lngPos1 = InStr(lngPos2, RichTextBox1.Text, "GHW, ")
If lngPos1 > 0 Then
lngPos1 = lngPos1 + Len("GHW, ") - 1
lngPos2 = InStr(lngPos1, RichTextBox1.Text, "c")
Txt5.Text = Mid$(RichTextBox1.Text, lngPos1, lngPos2 - lngPos1)
End If
Re: RichTextBox find extract ?