Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: VB супер консоль Добавлено: 14.01.10 17:10  

Автор вопроса:  V1RR | Web-сайт: V1RR.us | ICQ: 636580 
Хочу создать что-то типо некоего консольного приложения, которое будет во многом автоматизировать работу системы, упрощать ее, и в некоей мере защищать.

Интерфейс элементарно простой - в верхнем левом углу консоль (текстовое поле), статусбар и пару лейблов.

И сразу несколько вопросов как ни гуглил - не нашел.

1. Как сделать так чтобы по нажатию Enter текстовое поле очищалось?
2. Как сделать именно считывание данных "пословно"?
напр. "set auto"
т.е. "set" это что-то типо включения для параметра "auto". Если написать что-то типо:
If txt1.text="set auto" then...
то необходимо будет прописывать дял каждой такое, а я не хочу использовать одноклеточное решение :)
Обратная процедура выключения например будет "rem auto".
Ну с этим думаю смысл понятен.
3. Также хочу чтоб одной из функций программы был запуск браузера по умолчанию и переход на заданную страничку.
Опять-таки командой что-то типо:
"go www.yandex.ru"
Это подтверждает пункт 2, что тут уже точно все варианты не впишешь. Потому надо как-то реализовать пункт 2 сперва.
Как это реализовать?

Пока что хочу это узнать, позже думаю еще будут вопросы.
Сразу говорю уровень программирования у меня средний или чуть ниже, но занимаясь этим хочу его поднять, потому просьба помочь :)

Ответить

  Ответы Всего ответов: 43  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 14.01.10 17:57
1.
В событии Text1_KeyDown
  1.  
  2. If (KeyCode = vbKeyReturn) Text1.Text = ""




2. Используем функцию Split
  1.  
  2. Dim p As Variant, i As Long
  3. p = Split(Text1.Text, " ") 'Разделителем считается пробел
  4. 'Теперь p - это массив слов, нумерация с нуля.
  5. For i = 0 To UBound(p)
  6. 'p(i) - это слово номер i в строке. Нумерация с нуля
  7. Next

Ответить

Номер ответа: 2
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #2
Добавлено: 14.01.10 19:08
1 - сделано и работает корректно, спасибо :)
2 - что-то не пойму в какое событие лучше написать? Тоже в Text1_KeyDown с условием нажатия Enter, но до собитыя очистки поля?
И как правильно его записать? Я пишу:
  1.     Dim p As Variant, i As Long
  2.     p = Split(txtRun.Text, " ") 'Разделителем считается пробел
  3.     'Теперь p - это массив слов, нумерация с нуля.
  4.     For i = 0 To UBound(p)
  5.     'p(i) - это слово номер i в строке. Нумерация с нуля
  6.     If p(1) = "auto" Then MsgBox ("auto enabled") 'сообщение чисто проверить работоспособность
  7.     Next

Или я чего-то не понимаю? При этом пишет ошибку: Subscript out of range.

Ответить

Номер ответа: 3
Автор ответа:
 Nickola



Вопросов: 2
Ответов: 12
 Профиль | | #3 Добавлено: 15.01.10 07:32
V1RR пишет:
'Теперь p - это массив слов, нумерация с нуля.

Первое слово будет p(0), его и надо проверять

А цикл for вообще не нужен, если проверяешь конкретное слово.

Ответить

Номер ответа: 4
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #4
Добавлено: 15.01.10 08:34
  1.     Dim p As Variant, i As Long
  2.     p = Split(txtRun.Text, " ") 'Разделителем считается пробел
  3.     'Теперь p - это массив слов, нумерация с нуля.
  4.  
  5.  
  6.  
  7. '    Здесь уже работаешь с массивом p.
  8. '    p - это массив слов. p(0) - первое слово, p(1) - второе слово и т.п.
  9. '    UBound(p) - это номер последнего слова. Так как нумерация с нуля, то UBound(p) на единицу меньше количества слов. Цикл я тут для примера написал

Ответить

Номер ответа: 5
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #5
Добавлено: 15.01.10 11:27
Допустим мне надо сделать обработку фразы: set autorun aimp
Алгоритм такой:
1. Рассматривается первое слово, если оно = set, тогда вносим слово set в переменную F1 и сканируем 2 слово
2. Если 2 слово = autorun, тогда запускается msgbox, в котором выводится 3 слово.

Естессно вместо вывода через msgbox я буду реализовывать другую задачу в данном случае внесение некоего файла в автозагрузку.
По моему плану у этого файла уже заранее определен путь, так что с этим проблем не должно возникнуть.
Как в коде выполнить такой алгоритм применяя Split?

Ответить

Номер ответа: 6
Автор ответа:
 Nickola



Вопросов: 2
Ответов: 12
 Профиль | | #6 Добавлено: 15.01.10 12:45
  1.  
  2. Dim p As Variant
  3. p = Split(txtRun.Text, " ")
  4.  
  5. Select Case p(0)
  6.    Case "set"
  7.       Select Case p(1)
  8.          Case "autorun"
  9.             MsgBox(p(2))
  10.          Case "че-то_еще_с_set"
  11.             'выполняем на че-то еще
  12.       End Select
  13.    Case "еще_условие_для_первого_слова"
  14.       'могут быть сразу действия или еще Select
  15. End Select

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 15.01.10 18:43
:)

Ответить

Номер ответа: 8
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #8
Добавлено: 15.01.10 20:40
О! Можно замутить так
  1. App.Path & "\" & Replace(Text1.Text, " ", "/") & ".vbs"

Тобиш на каждую команду есть своя папка и в ней свой скрипт на выполнение. Тобиш
set autorun aimp

Превращается в
App.Path & "\set\autorun\aimp.vbs

Тубо запускаем скриптконтролом и довольны как пряник.

Это так, фантазии. Еще можно каждый пробел заменить на точку и тоже засунуть в скрпит. Будет
set.autorun.aimp

В вбскрипте выполняться будет как функция объекта Autorun, который является подобъектом set. Правда, объекта с именем set не получится, но можно использовать объект SetBoo, а в строке делать замену set на setboo.

Еще можно такую же васю намутить, только чтоб пробелы заменялись на слеши и авторизировались через инет в сервак, на котором сохранены настройки каждого пользователя. Каждая команда - скрипт, скачивается и запускается.

Еще это все можно встроить в XQR2.

Еще можно сделать графическую версию. Тобишь апишками выяснить, имеет ли комп планшет или сенсорный дисплей, и если есть, команды не вводить, а рисовать.

Ответить

Номер ответа: 9
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #9 Добавлено: 15.01.10 21:20
V?DUnitА ещщё можно сделать так, чтобы эта прога отвечала на вопрос "Есть ли жизнь на марсе", и предсказывала будущее.Но только за отдельную плату;)

Ответить

Номер ответа: 10
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #10
Добавлено: 15.01.10 23:29
Если только встроить эти функции в XQR2.

Ответить

Номер ответа: 11
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #11
Добавлено: 16.01.10 00:32
VBD, встрой аплоадер на файлхостинги=) Я уже в плеер встроил) правда не придумал пока как сделать выбор между ргхост и залил.ру

Ответить

Номер ответа: 12
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #12
Добавлено: 16.01.10 01:42
Nickola, спасибо, то что надо. Только 1 момент еще есть на эту тему интересующий.
Если делаю так:
  1. Private Sub txtRun_KeyDown(KeyCode As Integer, Shift As Integer)
  2. If (KeyCode = vbKeyReturn) Then
  3.     Dim p As Variant
  4.     p = Split(txtRun.Text, " ")
  5.  
  6. Select Case p(0)
  7.    Case "set"
  8.       Select Case p(1)
  9.          Case "autorun"
  10.             MsgBox (p(2))
  11.          Case "че-то_еще_с_set"
  12.             'выполняем на че-то еще
  13.       End Select
  14.    Case "еще_условие_для_первого_слова"
  15.       'могут быть сразу действия или еще Select
  16. End Select
  17. End If
  18.  
  19.     'очистка пля по нажанию Enter
  20.     If (KeyCode = vbKeyReturn) Then txtRun.Text = ""
  21. End Sub


То выдает ошибку Subscript out or range если я напишу в строке просто например "set" или "set autorun".
Какую процедуру можно написать чтобы избегать этой ошибки и вставить в код выше чтобы оно допустим при неправильном вводе выдавало msgbox ошибку?

Ответить

Номер ответа: 13
Автор ответа:
 V1RR



ICQ: 636580 

Вопросов: 8
Ответов: 29
 Web-сайт: V1RR.us
 Профиль | | #13
Добавлено: 16.01.10 01:43
Т.е. когда нехватает данных возникает ошибка чтения из p(2) - т.к. его если не написать 3 слово попросту нету.

Ответить

Номер ответа: 14
Автор ответа:
 Nickola



Вопросов: 2
Ответов: 12
 Профиль | | #14 Добавлено: 16.01.10 07:19
Надо вставить проверку размера массива
  1. Private Sub txtRun_KeyDown(KeyCode As Integer, Shift As Integer)
  2. If (KeyCode = vbKeyReturn) Then
  3.     Dim p As Variant
  4.     Dim RangeArray as Integer ' для размера массива, если Integer не хватит можно увеличить, хотя вряд ли
  5.     Dim myErrorCode as Byte ' для выдачи номера ошибки
  6.     p = Split(txtRun.Text, " ")
  7.     RangeArray = UBound(p) ' запоминаем размер массива, чтоб каждый раз при проверке массив не мучать
  8.     Select Case p(0)
  9.        Case "set"
  10.        If RangeArray < 1 Then
  11.             myErrorCode  = 1
  12.        Else
  13.           Select Case p(1)
  14.              Case "autorun"
  15.                 If RangeArray < 1 Then
  16.                     meErrorCode = 2
  17.                 Else
  18.                     MsgBox (p(2))
  19.                 End if
  20.              Case "че-то_еще_с_set"
  21.                 'выполняем на че-то еще
  22.                 'если нужно p(2) то делаем проверку         ***
  23.                 'если сразу команда, то не делаем проверку  ***
  24.           End Select
  25.        End If
  26.        Case "еще_условие_для_первого_слова"
  27.           'могут быть сразу действия или еще Select
  28.           'здесь тоже может стоять проверка  ***
  29.     End Select
  30.     End If
  31.  
  32.     If myErrorCode > 0 Then MsgBox "Команда " & p(0) & " написана не правильно!" & vbCrLf & "Должно быть как минимум " & myErrorCode & " слов(а)!"
  33.     'очистка пля по нажанию Enter
  34.     If (KeyCode = vbKeyReturn) Then txtRun.Text = ""
  35. End Sub


*** - измененные комменты

Ответить

Номер ответа: 15
Автор ответа:
 Nickola



Вопросов: 2
Ответов: 12
 Профиль | | #15 Добавлено: 16.01.10 07:22
В коде ошибка (строка 16):

Вместо - meErrorCode
Должно быть - myErrorCode

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам