Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не работает Split? 
:(
    Опции темы
korob2001
Дата 25.11.2004, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Есть такая проблема.
Допустим есть переменная строкового типа, её нужно разбить посимвольно и сохранить в массив.
На Perl это будет выглядеть так:
Код

my $str = "Hello, world!";
my @chars = split("", $str);


ОК. На VB пишу такой код:

Код

Option Explicit
Dim strMy As String
Dim charsMy() As String

Private Sub Form_Load()
       strMy = "Hello, world!"
End Sub

Private Sub Command1_Click()
       Dim i As Integer
       charsMy() = Split(strMy, "")
       For i = 0 To UBound(charsMy)
           Debug.Print charsMy(i)
       Next i
End Sub

Отсюда видно, что массив состоит из одного элемента, в котором содержится вся строка.
Почему так? :||||||

Заранее спасибо,
Денис


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
boevik
Дата 26.11.2004, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



В VB split работает по другому. Описано в MSDN.


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
cardinal
Дата 26.11.2004, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(korob2001 @ 25.11.2004, 22:20)
Почему так?

Потому, что второй параметр у split это разделитель. Он у тебя равен "" - вот и не делится у тебя строка.
Читаем (как всегда MSDN smile):
Цитата

Split function
...
delimiter

Optional. String character used to identify substring limits. If omitted, the space character (" ") is assumed to be the delimiter. If delimiter is a zero-length string, a single-element array containing the entire expression string is returned.

Можешь написать так:
Код

Option Explicit

Dim strMy As String
Dim charsMy() As String

Private Sub Form_Load()
      strMy = "Hello, world!"
End Sub

Private Sub Command1_Click()
   Dim i As Integer
   Dim strNewMy As String
   For i = 1 To Len(strMy)
       If Mid(strMy, i, 1) <> " " Then strNewMy = strNewMy & Mid(strMy, i, 1)
       strNewMy = strNewMy & " "
   Next
   strNewMy = Trim(strNewMy)
   charsMy() = Split(strNewMy, " ")
   For i = 0 To UBound(charsMy)
       Debug.Print charsMy(i)
   Next i
End Sub

Возможно можно и покрасивей написать...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
korob2001
Дата 27.11.2004, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



To boevik
Сегодня только инет подключил, теперь буду MSDN юзать. ;)))

cardinal
Спасибо, то что нужно.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
cardinal
Дата 27.11.2004, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(korob2001 @ 27.11.2004, 03:40)
Сегодня только инет подключил, теперь буду MSDN юзать. ;)))

MSDN есть и на диске...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
korob2001
Дата 27.11.2004, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

MSDN есть и на диске...

Точнее сказать, он там должен быть. ;)))) Но у меня нет MSDN. После установки Visual Basic, перезагружаю комп и запускаю повторно инсталяцию. Жму кнопку "Установить MSDN", на что получаю сообщение "Вставьте второй диск". Проблема в том, что у меня только один диск. smile((


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
cardinal
Дата 27.11.2004, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(korob2001 @ 27.11.2004, 20:08)
Проблема в том, что у меня только один диск.

Понимаю smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.