Страница: 1 |
Вопрос: Количество символов | Добавлено: 16.03.07 14:31 |
Автор вопроса: ![]() |
Господа, всем здрасте!
Нужна Ваша помощь, ибо прочитал книжку по VB, несколько статей и ничего не понял. А очень хочется. Есть у меня одна проблемка (Вам она может показаться смешной). Нужно написать программку, которая бы считала количество заданных символов в строке. Например символов "п" или "а" в слове "папараци". Я знаю как посчитать общее количество символов, а вот отдельные... За помощь буду благодарен и даже больше! |
Ответы | Всего ответов: 15 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 16.03.07 15:26 |
____ Надо использовать функцию mid(str,i,1) в цикле сравнения и подсчёта символов. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #2 | Добавлено: 16.03.07 18:43 |
а можно и так:
Private Sub Command1_Click()
MsgBox UBound(Split(Text1.Text, "п" ![]() End Sub |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #3 | Добавлено: 16.03.07 20:19 |
А можно поподробней пожалуйста. Я же чайник ).
Попробовал, не получилось. Как все это прописать и где? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #4 | Добавлено: 16.03.07 20:31 |
А можно поподробней пожалуйста.
На здоровье: На форме распологаешь кнопку Command1. в код кнопки вписываешь: MsgBox UBound(Split("Твой текст", "т"
![]() "Твой текст" - это твой текст ![]() "т" - буква, которую надо считать. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #5 | Добавлено: 16.03.07 20:39 |
Это понятно. Но "Мой текст" должен вводиться в TextBox на форме, и буква которую надо считать, тоже там. Что бы менять можно было.
MsgBox UBound - эта команда VBA? А то у меня VB 6.0. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #6 | Добавлено: 16.03.07 20:59 |
Хорошо, подробней:
MsgBox - команда, которая выводит диалоговое окно. Ubound(массив) - Возвращает нижнюю границу массива Split(текст,знак) - возвращает одномерный массив, где каждый элемент массива представляет собой кусок строки, отрезанный от "знака" и до "знака", т.е. команда MsgBox UBound(Split("Попытка подсчета", "п" вудаст сообщение "1", т.к. регистр букв также имеет значение.
![]() в твоем случае: кидаешь на форму 2 текстбокса: Text1 и Text2 кнопку Command1 в код кнопки запкидываешь: MsgBox UBound(Split(Text1.Text, Text2.Text))
Результат: Из строки введенной в Text1 вырезаются куски отрезанные символом(и), введенными в Text2. Уф-ф-ф... Ни хрена из меня учителя не будет... Все это в VB6. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 408802757 Вопросов: 76 Ответов: 985 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 16.03.07 21:00 |
MsgBox UBound(Split("Твой текст", "т"![]() Заместь "т" ставиш text2.text Создаеш на форме text2,text1 Записиваеш в text1.text свой текст в text2.text букву і нажимаеш на comannd1 MsgBox UBound(Split(text1.text), text2.text)) Вроби так не проверял но должно роботать |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 408802757 Вопросов: 76 Ответов: 985 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 16.03.07 21:02 |
Опередили.Уменя одна ошибка
MsgBox UBound(Split(text1.text), text2.text))
Нада MsgBox UBound(Split(text1.text, text2.text)) |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 16.03.07 23:03 |
Ubound(массив) - Возвращает нижнюю границу массива
____ Думаю, что UBound() возвращает верхний индекс массива, а не границу. Поэтому результат будет зависеть от номера первого индекса (0 или 1). ____ Прикольно с функцией Split. Может быть ещё и LCase() использовать внутри? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #10 | Добавлено: 17.03.07 00:04 |
Думаю, что UBound() возвращает верхний индекс массива, а не границу
А какая хрен разница.... Число элементов массива он тебе выведет. 2. Можно и LCase/UCase пользовать, все пашет: MsgBox UBound(Split(UCase(Text1.Text), UCase(Text2.Text)))
|
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 17.03.07 11:14 |
А какая хрен разница.... /Arseny/ ____ Полагаю, что только если задан "Base 1" ответ будет точным. В противном случае — на единицу меньше.
____ Просто тут такие вопросы задают, что не лишним будет напоминание об этой разнице. ![]() |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ICQ: 298826769 Вопросов: 53 Ответов: 1732 |
Профиль | Цитата | #12 | Добавлено: 17.03.07 12:37 |
У меня по умолчанию все считает. |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 17.03.07 13:16 |
... по умолчанию ... ____ Меня это сильно заинтересовало. Провёл исследование. Выяснилось, что на функцию Split() оператор Option Base 1 не действует — независимо от него формируется массив с первым индексом равным нулю(!).
____ Ну, а поскольку массив получается на единицу больше, чем количество разделителей, то верхний индекс массива численно равен количеству разделителей. ____ А решение красивое — возьму на заметку. Спасибо. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #14 | Добавлено: 17.03.07 14:50 |
UBOUND - только верхняя граница
LBOUND - только нижняя Dim i& ![]() UBound(i) даст 50, а LBound(i) — -18 Чтобы узнать размер массива надо сделать так Size = UBound(array) - LBound(array) + 1 |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #15 | Добавлено: 17.03.07 15:20 |
Спасибо огромное всем! Помогли.
Чесно говоря, узнал много нового ) Спасибо! |
Страница: 1 |
|