|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.09.2010, 10:46 | #1 |
Форумчанин
Регистрация: 12.05.2009
Сообщений: 273
|
Как разделить textbox1.text (с разделителями ;) по частям?
В textbox есть такой запись (с разделителями ';'):
textbox1.text="111; asddf; we12341s; rty456" Как получить последный (именно 4-й) часть этого текста? |
17.09.2010, 10:55 | #2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Например, так:
Код:
Чем шире угол зрения, тем он тупее.
|
17.09.2010, 13:00 | #3 |
Форумчанин
Регистрация: 12.05.2009
Сообщений: 273
|
SAS888, cпасибо!
|
13.12.2017, 11:12 | #4 |
Регистрация: 09.11.2017
Сообщений: 7
|
Ребят и мне помогите определить вытаскивание нужного текста из полученной строковой переменной посредством VBA.
С com порта получаю буфер и вписываю в переменную. Итого переменная с полученными данными всегда однотипно выглядит, а именно вот так как в скобках (самих скобок конечно там нет): ( 6 2.42kg ). Мне нужно получить в textbox именно 2.42 , но по логике я понимаю, что значение цифровое может быть и 2 и 3 и 4 цифры до запятой, то есть значение нужно слева от kg и до первого пробела. Заранее спасибо! |
13.12.2017, 11:57 | #5 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
13.12.2017, 12:09 | #6 |
Регистрация: 09.11.2017
Сообщений: 7
|
Александр, спасибо, что откликнулись!
Я даже не любитель в VBA, поэтому костыли мои решения)). Я вставил Ваш код , но результат получил 2.42kg, то есть с единицей измерения. А как убрать kg ? Private Sub Button1_Click() Dim v As String Dim vr As String MSComm1.InputLen = 0 On Error Resume Next MSComm1.PortOpen = True Label1.Caption = "Ïîðò îòêðûò" If Err Then MsgBox "Com" & MSComm1.CommPort & ": not available. Change CommPort property to another port." Label1.Caption = "Ïîðò çàêðûò" Exit Sub End If Do Dummy = DoEvents() Loop Until MSComm1.InBufferCount >= 8 v = MSComm1.Input TextBox2.Text = StrReverse(Mid(Trim(StrReverse(v)), 3, InStr(Trim(StrReverse(v)), " ") - 3)) MSComm1.PortOpen = False End Sub |
13.12.2017, 12:34 | #7 |
Регистрация: 09.11.2017
Сообщений: 7
|
Вообщем kg то я убрал, но похоже, что надо использовать указание переменной "v" как массива. Потом Split использовать для разбивки на группу строк. И выводить нужную строку.
Проблема заключается в том, что значение веса, как писал в самом начале, это переменная величина приходящая с com порта. Сейчас она 4.24 а другая коробка 18.67 и т.д., то есть считывание фиксированного количества цифр функцией обратного считывания строки возможно что не подходит. А есть возможность поделиться знанием, как вынимать только цифровое значение, которое может иметь разное количество цифр с наличием десятичных или без них? |
13.12.2017, 12:46 | #8 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Тестировал функцию на данных с сообщения №1. Может вход не такой как написали?
Код:
Код:
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. Последний раз редактировалось Aleksandr H.; 13.12.2017 в 12:49. |
13.12.2017, 14:41 | #9 |
Регистрация: 09.11.2017
Сообщений: 7
|
снимок экрана
суть в том, что если я ставлю :
Dim s As String Dim v s = MSComm1.Input v = Split(s, " ") TextBox3.Text = Replace(UCase(v(UBound(v))), "KG", "") То если значение цифровое идет с одной цифрой до точки, типа 4.34 , то выдает почти нормально в textbox , но если вес следующей коробки будет , например 57.45, то не выдает уже ничего. Какая строка может приходить в переменную "s": например измеряю первую коробку 1 4.21kg+непечатный символ в конце kg сохранил это измерение в ексель измеряю новую коробку 2 17.56kg+непечатный символ в конце kg 1 и 2 это порядковый номер измерения и нам он не важен. Но вот значения могут быть с одной цифрой после точки или с двумя цифрами после точки или три цифры до точки. А сейчас когда одна цифра до точки, то значение вписывает, только непечатный символ в конце еще остается лишним (прикладываю скрин экрана). Но если будет значение две цифры до точки, то ничего не вписывает совсем. |
13.12.2017, 15:05 | #10 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Дайте хотя бы 20-30 примеров данных
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Процедуры: Ввод(text)-Вычисление(string)-Вывод(text) | FYBVFPFYBC | Помощь студентам | 2 | 06.05.2010 23:15 |
Проблема с textBox1 | NoF[1]X | Общие вопросы C/C++ | 0 | 04.04.2010 16:09 |
Разрезать файл по частям | KoBRaAndrey | Общие вопросы Delphi | 8 | 23.01.2010 19:03 |
интегрирование по частям | bill | Свободное общение | 4 | 28.08.2007 17:59 |
PCHAR строка с разделителями #13#10. Как вычленить отдельные "подстроки" | EdNovice | Общие вопросы Delphi | 1 | 17.04.2007 11:42 |