Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Функция Split! Добавлено: 29.07.04 14:02  

Автор вопроса:  kyb | Web-сайт: www.kbweb.dax.ru
Как с помощью этой функции разделить текст? Поподробнее...

Ответить

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

Номер ответа: 1
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #1 Добавлено: 29.07.04 14:22
Все просто, как качан капусты

Dim res As Variant
res=Split("Visual-Basic-Forever!","-";)
MsgBox res(0)
MsgBox res(1)
MsgBox res(2)

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 29.07.04 14:24
Ни в коем случае не Dim res As Variant
лучше уж Dim res() As String

Ответить

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



Вопросов: 30
Ответов: 683
 Профиль | | #3 Добавлено: 29.07.04 15:37
Опять экономия памяти?

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 29.07.04 16:15
И времени :)

Ответить

Номер ответа: 5
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 29.07.04 19:07
String не будет работать в этом случае!
Split возвращает Variant.

Ответить

Номер ответа: 6
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 29.07.04 19:10
Dim res() As String
Будет работать, но какая тут экономия памяти и времени?
Не нужно изобретать велосипед. Split вернет Variant а VB преобразует его в String... не меняйте шило на мыло.

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 29.07.04 20:36
Хм... а как же последующее обращние к переменной !?

Ответить

Номер ответа: 8
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #8
Добавлено: 29.07.04 21:29
 String там врядли прокатит.
 Ведь Variant можно преобразовать в массив (чем и занимается SPLIT), а String ни как не получится.

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #9
Добавлено: 29.07.04 22:10
CyRax, см. внимательнее, плз... я предлагал и предлагаю преобразовывать в массив строк... при этом при многократных обращениях к массиву должна, по идее, увеличиться скорость, чем это было бы, если бы обращались мы к варинт переменной!

Ответить

Номер ответа: 10
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #10 Добавлено: 29.07.04 23:34
Sne, не вводи народ в заблуждение :)))
Функция Split работает с переменной типа вариант. Она выдает переменную Variant которую уже потом можно в силу её особенностей интерпретировать как массив. Пытаясь ускорить работу заданием вместо Variant массива строк, ты получишь обратный эффект: будет работать медленнее, от 1.5 до 2 раз. Причина - дополнительное преобразование массива строк в переменную Variant.
Вот примерчик:
    ;Dim i As Long, t As Single
    ;Dim res '() As String
    t = GetTickCount()
    For i = 0 To 100000
        res = Split("Visual-Basic-Forever-Visual-Basic-Forever-Visual-Basic-Forever-Visual-Basic-Forever-Visual-Basic-Forever-Visual-Basic-Forever-!", "-";)
    Next i
    ;Debug.Print Str$(GetTickCount() - t)
Если объявить как String, то цикл занимает 1500-1550 мс. Если объявить как Variant, то 900-920 мс

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 30.07.04 00:57
это да, а потом обьращаться к чему скорее, к массиву символов, или к вариант типу !?

В одном месте проигрываем, в другом выигрываем... так всегда...

Ответить

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



Вопросов: 117
Ответов: 1538
 Профиль | | #12 Добавлено: 30.07.04 02:05
И обращаться к варианту тоже как ни странно, покажется, быстрее чем к массиву. Я таким образом в одной проге порядка 80% времени экономил, где был большой массив элементов и надо было быстренько просматривать его на наличие строк, которые в реальном масштабе времени набирались на клавиатуре. Массив строк не успевал, в Вариант - успевал с запасом.
Вариант медленнее при работе с числами. Вообще, имхо, в VB есть две вещи, которые все нещадно и незаслуженно ругают: msvbvm60.dll и variant. Если умело пользоваться, то это очень мощный инструмент. Конечно, проще написать As String и VB тебя услужливо подстрахует. Но если предусмотреть всё, не оглядываясь на подстраховки, то Variant - это хорошая вещь. Думаю пример со сплитом этому подтверждение.

Ответить

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



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 30.07.04 11:58
Хм... лано, перестаем ругать Вариант тип... Кстати и при работе с числами он не такой уж и тормозной...

Ответить

Страница: 1 |

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



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