Поиск и извлечение данных из TextBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
wosh
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.06.2010 (Ср) 22:25

Поиск и извлечение данных из TextBox

Сообщение wosh » 01.06.2015 (Пн) 12:12

Всем привет! Искал но так и не нашел.
В TextBox содержится текст примерно такого вида: {"opt_rrp":"-499","wwx_sr":"19.8","cell_x":"01805"}
Их я получаю по средствам microsoft internet transfer control с сайта

Код: Выделить всё
Dim strURL As String
Dim strToASP As String
Dim strHeader As String
strURL = "http://192.168.1.1/goform/goform_get_cmd_process?cmd=opt_rrp%2Cwwx_sr%2Ccell_x&multi_data=0"
Inet1.Execute strURL, "GET"
Text1.Text = Inet1.GetChunk(1024, icString): Inet1.Cancel


То есть 3 значения : opt_rrp, wwx_sr, cell_x. и их показатели. названия мне не нужны, а вот их показатели, то есть цифры нужно как то извлечь.
То есть чтобы получилось так:
Код: Выделить всё
Private Sub Command1_Click()
MsgBox opt_rrp
End Sub

Private Sub Command2_Click()
MsgBox wwx_sr
End Sub

Private Sub Command3_Click()
MsgBox cell_x
End Sub

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Поиск и извлечение данных из TextBox

Сообщение pronto » 01.06.2015 (Пн) 13:47

Какие действия вызывают затруднения?
O, sancta simplicitas!

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Поиск и извлечение данных из TextBox

Сообщение bon818 » 01.06.2015 (Пн) 14:53

Функция InStr
Код: Выделить всё
InStr([Start,]String1,String2[,Compare])
InStrB([Start,]String1,String2[,Compare])

Функция InStr(In String) служит для поиска номера символа(номера байта для InStrB), с которого начинается в заданной строке образец поиска. Поиск идет от указанной позиции слева направо. Поиск вхождения одной строки в другую весьма часто используемая операция. Нумерация символов всегда начинается с единицы

wosh
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.06.2010 (Ср) 22:25

Re: Поиск и извлечение данных из TextBox

Сообщение wosh » 01.06.2015 (Пн) 15:42

pronto писал(а):Какие действия вызывают затруднения?


Просто я еще профан! и не знаю как искать и извлекать в этом textbox!

wosh
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.06.2010 (Ср) 22:25

Re: Поиск и извлечение данных из TextBox

Сообщение wosh » 01.06.2015 (Пн) 15:43

bon818 писал(а):Функция InStr
Код: Выделить всё
InStr([Start,]String1,String2[,Compare])
InStrB([Start,]String1,String2[,Compare])

Функция InStr(In String) служит для поиска номера символа(номера байта для InStrB), с которого начинается в заданной строке образец поиска. Поиск идет от указанной позиции слева направо. Поиск вхождения одной строки в другую весьма часто используемая операция. Нумерация символов всегда начинается с единицы


Не очень понимаю как это использовать!

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Поиск и извлечение данных из TextBox

Сообщение pronto » 01.06.2015 (Пн) 16:16

InStr возвращает позицию вхождения String2 в String1. String1 = Text1.Text, String2 = """"
Для твоей строки {"opt_rrp":"-499","wwx_sr":"19.8","cell_x":"01805"}
InStr вернёт 2 (символ для поиска — двойная кавычка), если в параметр Start передать результат самой функции, то можно пройтись по всей строке:
Код: Выделить всё
InStr(1, Text1.Text, """") = 2
InStr(2+1, Text1.Text, """") = 10
InStr(10+1, Text1.Text, """") = 12
InStr(12+1, Text1.Text, """") = 17
InStr(17+1, Text1.Text, """") = 19
InStr(19+1, Text1.Text, """") = 26
InStr(26+1, Text1.Text, """") = 28
InStr(28+1, Text1.Text, """") = 33
InStr(33+1, Text1.Text, """") = 35
InStr(35+1, Text1.Text, """") = 42
InStr(42+1, Text1.Text, """") = 44
InStr(44+1, Text1.Text, """") = 50

Теперь тебе известно положение всех кавычек. Дело за Mid, чтобы вырезать нужные данные между 3-й и 4-й кавычкой, 7-й и 8-й, 11-й и 12-й...
O, sancta simplicitas!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Поиск и извлечение данных из TextBox

Сообщение alibek » 01.06.2015 (Пн) 16:17

1. Функция InStr("var1", "text var1 = val1") вернет 6. Это означает, что в строке "text var1 = val1" подстрока "var1" начинается с 6 позиции и с помощью функции Mid можно извлечь данные, связанные с этой подстрокой.

2. Также можно убрать фигурные скобки. Затем сделать Split по запятой, чтобы получить массив параметров. Затем перебрать в цикле элементы массива и для каждого сделать Split по двоеточию, чтобы разделить название параметра и его значение. Ну и затем убрать обрамляющие кавычки и сравнить название параметра с искомым.

3. Еще можно использовать регулярные выражения (например подключив их из рантайма VBScript). Но нужно понимание, что это такое.
Lasciate ogni speranza, voi ch'entrate.

wosh
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.06.2010 (Ср) 22:25

Re: Поиск и извлечение данных из TextBox

Сообщение wosh » 01.06.2015 (Пн) 16:42

Только проблема в том, что эти цифры могут быть разные. то есть например {"opt_rrp":"-6","wwx_sr":"4.5","cell_x":"0F80E"} то есть кавычки смещаются.
Или я чего то не доганяю. запутался уже.

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Поиск и извлечение данных из TextBox

Сообщение bon818 » 01.06.2015 (Пн) 17:01

Если нужны только значения цифр, то можно еще проще сделать _
вот готовый код
Код: Выделить всё
txt = {"opt_rrp":"-499","wwx_sr":"19.8","cell_x":"01805"}
Dim opt_rrp
Dim wwx_sr
Dim cell_x
Dim txt As String
Dim str1() As String
str1 = Split(txt, """:""")
opt_rrp = Val(str1(1))
wwx_sr = Val(str1(2))
cell_x = Val(str1(3))

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Поиск и извлечение данных из TextBox

Сообщение pronto » 01.06.2015 (Пн) 17:20

Если cell_x в Hex, то cell_x = Val("&H" + str1(3))
O, sancta simplicitas!

bon818
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 267
Зарегистрирован: 29.08.2009 (Сб) 4:49
Откуда: Ташкент

Re: Поиск и извлечение данных из TextBox

Сообщение bon818 » 01.06.2015 (Пн) 17:33

:D тогда уж Left(str1(3), InStr(str1(3), """"))

wosh
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.06.2010 (Ср) 22:25

Re: Поиск и извлечение данных из TextBox

Сообщение wosh » 01.06.2015 (Пн) 17:55

Всем спасибо, наставления получил, дальше сам.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поиск и извлечение данных из TextBox

Сообщение Хакер » 01.06.2015 (Пн) 18:35

Главное наставление: незачем пихать этот текст в TextBox вообще.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

wosh
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 16.06.2010 (Ср) 22:25

Re: Поиск и извлечение данных из TextBox

Сообщение wosh » 01.06.2015 (Пн) 19:02

Хакер писал(а):Главное наставление: незачем пихать этот текст в TextBox вообще.


да я уже все переобдумал и убрал его.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

    TopList