Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Visual Basic - Трюки и Хитрости, советы и ответы на вопросы


Служба Рассылок Городского Кота
VB Хитрости - советы и ответы на вопросы

Здравствуйте, уважаемые читатели.

Сегодня мы будем говорить об общих вещах. Это опять таки можно назвать хитростями, но рука не поднимается. Хочется нaзвать это скорее правильным использованием возможностей языка.
Начнем с того, что в шестой версии VB появились дополнительные функции для работы со строками. Не все о них знают, а те что знают - не всегда используют.

Бросим взгляд на парочку Split() & Join() В первую очередь - прошу вас познакомьтсь (для тех кто еще не знаком) с типом данных Variant . Как известно, этому типу данных может быть присвоено значение любого типа. Многие этим пользуются для дела, а многие, по недомыслию, используют универсальный тип данных где попало. Итак, присвоить переменной типа variant можно любое значение. В том числе и массив (array)

  • Маленькое отступление. Я получаю довольно много писем, в которых люди говорят спасибо, задают вопросы, высказывают пожелания. Среди этого потока была пара писем, в которым меня обвиняли в том, что я говорю на "непонятном языке" :-(( Но я стараюсь. Я стараюсь говорить на том языке , на котором привык обсуждать технические вопросы. Я стараюсь избегать откровенного слэнга, но не всегда это получается. Есть вещи, которые не могут быть названы по русски, так как это "не звучит". Так же, я не собираюсь использовать многие откровенно глупые наименования, придуманные филологами от Микрософта в русских переводах . Как можно вместо "лэйбл" говорить "элемент управления метка". Как там был переведен таймер, мне даже и вспомнить не удается. Так что, уважаемые ценители русского языка, прошу пардону. Язык этой рассылки будет и впредь включать непереводимые американизмы, неотрывно связанные с программирование мне Бэйсике.

Положить массив в переменную очень легко.

           Dim Arr(10) as string
           Dim vArr as Variant
           vArr = Arr
            

Никаких скобок с указанием номера элемента массива , иначе этот самый элемент и будет положен в вэриант
Извлекать и использовать вэриант, как массив, ничуть не сложнее:
Debug.Print varr(0)

К вопросу о написании безопасного кода - вы можете использовать Ubound & LBound , и так же как и с любым динамическим массивом нарваться на ошибку, когд массив еше не инициализирован и пустой.
Итак, раз мы разобрались с массивами расположенными в переменных типа variant можно начать применять эти переменные
VArr = Split(выражение, разделитель)
Кроме этих двух параметров - есть еще пара, но для нас важны именно первые. Как это работает:

Если на вход вы подадите
VArr = Split("C:\Path1\subPath1\FileName","\")
то на выходе в переменной VArr будет лежить массив из 4 этементов, массив начинается с 0
Т.е. обращение VArr(3) вернет вам имя файла.
Инструмент достаточно универсальный. В качестве разделителей можно использовать более одного символа.
Более того, задайте в качестве разделителя символ переноса строки - chr(13) при этом в качестве выражения задайте не короткую строку, а целый файл положенный в строковую переменную. Результатом будет разложенный на строки файл,

Я не настаиваю делать именно так, файл можно прочитать и построчно ( быстродействие?) но идея заслуживает внимания и во многих других случаях.

Антипод Split - это функция Join - позволяет легко собрать массив в текстовую строку. Опять таки это можно сделать в цикле, но можно и не утруждать себя этим.

 

Не припомню, писал я уже этот трюк. Но на всякий случай повторюсь
Задача - есть десяток строк, надо проверить их уникальность - т.е. должны быть только уникальные строки.
Что будем делать ? Перебрать в цикле - хорошо, но не совсем рационально. Вдруг строк не 10 а 100, или 500 ?

Предлагаю возложить это дело на плечи VB

Просто добавляйте строки в коллекцию , обрабатывайте ошибки при добавлении дубликатов.
Хитрость в том, что у коллекции уникальным является ключ. Т.е. добавлять надо саму строку, а ключем добавлять ее же.

Да, это расточительно с точки зрения расхода памяти, но зато быстро пишется. Да и кто ее считает сейчас....

После использования надо коллекцию прибить, чтобы место не занимала.

 


Традиционная рекомендация из серии "куда пойти учиться" - по мнению читателей (а читатели выражают свое мнение не только письмами, но и покупками, статистика которых вполне доступна) лучший печатный учебник по VB . Отзывы читателей об этой книге можно посмотреть у меня на сайте - здесь
Книга, весьма полезная для понимания работы с API. А учитывая ее смешную стоимость - 45 рублей.... Короче, рекомендую

 

Успехов в программировании!

Борис Рудой

Автор сайта - Visual Basic на русском



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное