Обработка строк

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

Обработка строк

Сообщение Tень » 21.11.2003 (Пт) 16:28

Итак, попробую сформулировать вопрос:
Есть TextBox в который вводятся команды.
Команды выглядят так:
//Команда Параметр=значение Параметр=Значение ... ... Параметр=Значение ...
Тоесть таких Параметров с значением может быть сколько угодно(от пользователя зависит)
Но! Все возможные параметры любой из возможных команд мне известны. Например есть всего три команды и у каждой несколько значений:
Команда - Привет
Её значения - Шрифт-такой-то
Цвет - такойто
Размер - такой-то
положение - такое-то
И всё, больше не определено, а значит и быть не может.

И так три раза с разными значениями.(Разные команды, у каждой разное количество разных параметров и у каждого параметра есть своё значение)

И есть Процедуры обработки команд. Например:
Private Sub Привет ( ... ... )
... ...
End Sub

Как мне сделать так, что бы эта строка обработалась, проверилась на наличие ошибок в названиях команды и аргументов(и если ошибка, то перекинула на функцию обработки ошибок) И в случае если ошибки не оказалось отправила меня на обработку процыдуры соответствующей введённой мною команды + !! присвоив Параметрам(определённым ранее) значения, стоящие после знака "=". Вот.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 21.11.2003 (Пт) 16:57

ну примерно так:

Код: Выделить всё
Sub GetCmd(ByVal strCmd As String) ' первоначальная обработка команды
  ' strCmd строка содержащая введенную команду вместе с параметрами
  Dim strCommand As String ' сама команда
  Dim strParameters As String ' параметры
  strCommand = Split(strCmd, " ")(0) ' выделяем команду из strCmd
  ' функция Split() используется для разбиения строки, содержащей разделители на массив подстрок (без разделителей)
 
  ' выделяем параметры
  strParameters = Mid$(strCmd, Len(strCommand) + 2)

  ' теперь определяем что у нас за команда и вызываем соответствующую ей процедуру обработки
  Select Case str Command
  Case "commsnd1"
    Call Command1Sub (strParameters)
  End Select
  ' сделай столько Case, сколько у тебя комманд
End Sub

' ну и сама процедура разбора комманд
Sub Command1Sub(ByVal sParam As String)
  Dim ArrParam() As String ' массив под все параметры (обязательно динамический)
  Dim strParam As String ' имя параметра
  Dim strValue As String ' его значение

  Dim i As Integer ' счетчик для цикла

  ArrParam = Split(sParam, " ") ' загнали параметры в массив
  ' теперь в цыкле проходим по всем параметрам
  For i = 0 To Ubound(ArrParam) ' -1 (про минус 1 не помню. если будет ругатся, значит единицу надо отнять)
    strParam = Split(ArrParam(i), "=")(0)
    strValue =Split(ArrParam(i), "=")(1)
    ' получили временные переменные с именем параметра и значением
    ' даальше уже думай сам как их использовать
  Next i
End Sub

вот такой примерный набросок получился... :wink:
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Сообщение Urvin » 21.11.2003 (Пт) 16:57

Код: Выделить всё
dim a (100)
a = split(text1.text, " ")    'Выделение блоков
if a(0) = "PrintText" then
    i=1
    do until a(i) = ""
        s=a(i)
        s1 = left(s,instr(s,"=")
        s2 = right(s,instr(s,"=")
        if s1 = "text" then
           print s2
        elseif s1="font" then
           me.fontName = s2
        end if
        i=i+1
    loop
else ...
end if


И так далее...
Не так страшен русский танк, как его пьяный экипаж


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

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

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 6

    TopList  
cron