Требуется помощь в обработке строки, принимающейся с COM-порта в Visual Basic 6

Компьютеры Программирование visual basic Программы Код

Принимаю сплошную строку вида #32@221!#34@135!#142@537!..., где число после решетки - число от одной до трех цифр, после собаки - число от одной до четырех цифр. Как обработать такую строку, чтобы были прочитаны эти числа и были записаны в отдельные переменные ? Дополнительные символы для того, чтобы разделять виды данных. При желании можно изменить форму поступающих данных (убрать или заменить знаки).
Ответы:
Примерно так
Пусть в массиве Resh() хранятся числа после решетки, а в массиве Sob() числа после собаки
intPoz1 = 1 : intPoz2 = 1 : i = 1 : j = 1
Do
 intPoz1 = InStr(intPoz1, Stroka$, "#",vbTextCompare)
 intPoz2 = InStr(intPoz1 + 1, Stroka$, "@",vbTextCompare)
 If (intPoz1 > 0) And (intPoz2 > 0) Then
   Resh(i) = Val(Mid(Stroka$, intPoz1 + 1, intPoz2 - intPoz1 - 1))
   i = i + 1
   intPoz1 = InStr(intPoz2, Stroka$, "!",vbTextCompare)
   If intPoz1 > 0 Then
     Sob(j) = Val(Mid(Stroka$, intPoz2 + 1, intPoz1 - intPoz2 - 1))
   Else
     Sob(j) = Val(Mid(Stroka$, intPoz2 + 1)
   End If
   j = j + 1
 ElseIf (intPoz1 > 0) And (intPoz2 = 0) Then
   Resh(i) = Val(Mid(Stroka$, intPoz1 + 1)
   i = i + 1
 Else : Exit Do
 End If
Loop


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.