![]() |
|
Модераторы: Akina |
![]()
|
|
| Гость_Sergei |
|
|||
|
Unregistered |
Помогите проверить, открыта ли скобка!
Необходими проверить в TextBoxe после нажатия определенной кнопки закрыта ли вторая скобка (при условии, конечно, что одна открыта) и их кол-во равно в данном тексте... |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Ну и в чем проблема?
Вариант первый: посчитали одни и вторые скобки, если их кол-во одинаковое, то все Ок. см. функции Left, Mid, Right, InStr и т.д. Вариант второй: написать парсер, что посложнее (и возможно нафиг не нужно в данной ситуации Начинай писать код, а там разберемся... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Гость_Sergei |
|
|||
|
Unregistered |
Ты уверен, что chr(34)!!! Если да, то поясни
И еще вопрос: Не мог бы ты так сделать, чтобы в случае нарушения баланас скобок, типа Например, ))(( или )(() и т.д.) Это как-нить сигнализировалось, заранее благодарю!!! |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Модератор: Нет, извиняюсь, а самому пораскинуть мозгами лень? Тут тебе помогут сделать то, что ты не можешь, а если ты сам делать ничего не хочешь, то никто за тебя все делать не будет... Я еще не видел ни одной строчки твоего кода!
см. функция Beep. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
Вот мой вариант кода, я его практически дописал, но как выяснилось не очень правильно...Исправьте, пожалуйста!!!
Private Sub cmd1_Click() Dim skobka1, skobka2, s1, s2 Dim stroka$ Dim parn%, a%, k%, i% stroka = txt1.Text skobka1 = Split(stroka, "(") skobka2 = Split(stroka, ")") If UBound(skobka1) = UBound(skobka2) Then txt1.ForeColor = &H0& Else txt1.ForeColor = &HFF& End If For i = 1 To Len(stroka) If Mid(stroka, i, 1) = ")" Or Mid(stroka, i, 1) = "(" Then a = a + 1 Next i For i = 1 To Len(stroka) s1 = Mid(stroka, i, 1) If s1 = "(" Then For k = i + 1 To Len(stroka) s2 = Mid(stroka, k, 1) If s2 = ")" Then parn = parn + 1 Next k End If Next i txt1.Text = a If s1 = parn Then MsgBox "Скобки расставлены верно" Else: MsgBox "Сбалансированность скобок нарушена" End If End Sub |
|||
|
||||
| Guest |
|
||||
|
Unregistered |
А осталные сам проверяй ... |
||||
|
|||||
| Guest |
|
|||
|
Unregistered |
В написанном мною коде почему-то не предусматривается вариант, типа - ()) или например, __)[code=vb]
Private Sub cmd1_Click() Dim stroka$ Dim k%, i%, j stroka = txt1.Text k = 0 For i = 1 To Len(stroka) If Mid(stroka, i, 1) = "(" Then k = k + 1 If Mid(stroka, i, 1) = ")" Then k = k - 1 If k < 0 Then MsgBox "Баланск скобок нарушен!" Exit For Next |
|||
|
||||
| coderx |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.9.2005 Репутация: нет Всего: нет |
К мою рекурсивную функцию добав некоторые коды, который обработавшую данные и декларацию Beep в началу модула:
Добавлено @ 14:41
Постав мессаг в следующую строку и после Exit For постав End If В твоем коде цикл работает только один раз ... |
||||||
|
|||||||
| СПАСИБО!!! |
|
||||||
|
Unregistered |
Большое спасибо за присланный код! Буду вечно благодарен тебе! |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Что будет, если
txt1.Text = "Этот символ - ""("" - называется скобкой." А? я не зря вырезаю литералы. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Guest |
|
||||||
|
Unregistered |
Можно пару комментариев к твоей проге.??? Зачем i = i + 1 в конце функции и зачем If i = 0 в каждой из в каждой процедуре??? |
||||||
|
|||||||
| coderx |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 8.9.2005 Репутация: нет Всего: нет |
Akina ты прав, но я не обратыл внимание на этого в свою коду. Но если так, возникают и другие проблемки:
1. Если текст в кавичках не один символ скобка и у него тоже есть некоторые скобки: они не проверяется. 2. И у моей коде тоже есть некоторые проблемы, он не проверяеть такой пример: (")(") По моему, эта не очень сложная проблема. Его можно решить и с твоём кодом. |
|||
|
||||
| Exception |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 7 Всего: 186 |
coderx, если вы думаете, что писать с ошибками -- круто, вы глубоко заблуждаетесь...
Лично я из последнего поста ничего не понял. По сабжу: имхо, проще найти парсер и не париться |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |