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

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


Служба Рассылок Subscribe.Ru

VB Хитрости - советы и ответы на вопросы
15 Ноября 2001
 

1. Для начала отвечу на вопрос страждущих, которые задавали мне его неоднократно за последнее время. Есть аррэй строк (массив) , как его отсортировать. Как обычно , Бэйсик дает для этого несколько возможностей. Простейшая - в стиле начинающего vb программиста , позволить VB сделать это за вас. Кладем на форму листбокс, свойство Visible ставим False, Sоrted в True , после этого добавляем в листбокс все строки из массива, а потом по порядку считываем их во второй, результирующий массив. Если речь идет о сотнях строк, все в порядке, и этот метод имеет право на жизнь, хотябы потому, что позволяет программисту лениться. Однако я порекомендую все же взять простой кусок кода:

Sub SortArrayOfStrings(rgstrToBeSorted, rgstrSortedRet)
    On Error Resume Next
    If Not IsArray(rgstrToBeSorted) Then
        Exit Sub
    End If
    If UBound(rgstrToBeSorted) < 0 Then
        Exit Sub
    End If

    ReDim rgstrSortedRet(UBound(rgstrToBeSorted) - LBound(rgstrToBeSorted))

    Dim iLastValidElement, iSource, cDestItems, iInsertAt, iMove
    iLastValidElement = UBound(rgstrToBeSorted)
    cDestItems = 0
    For iSource = LBound(rgstrToBeSorted) To iLastValidElement
        iInsertAt = 0
        Do While True
            If iInsertAt >= cDestItems Then Exit Do
            If LCase(rgstrSortedRet(iInsertAt)) > LCase(rgstrToBeSorted(iSource)) Then Exit Do
            iInsertAt = iInsertAt + 1
        Loop
        For iMove = cDestItems To iInsertAt + 1 Step -1
            rgstrSortedRet(iMove) = rgstrSortedRet(iMove - 1)
        Next
        rgstrSortedRet(iInsertAt) = rgstrToBeSorted(iSource)
        cDestItems = cDestItems + 1
    Next
End Sub

И вызовите его вот так:

Dim a(2)
Dim b
a(0) = "x"
a(1) = "a"
a(2) = "y"
SortArrayOfStrings(a,b)

debug.print b(0)
debug.print b(1)
debug.print b(2)

Это далеко не самый быстрый способ сортировки , однако для умеренных размеров массивов (тысячи записей) он работает неплохо. Более быстрые способы существуют и они могут быть найдены в литературе или Инете. Может быть вскоре я вернусь к одному из них и расскажу вам :-)

 

Да, еще одно - кто то спрашивал у меня по поводу книжки для начинающих - чтобы просто с чего начать. Так вот книжка Встроенные функции языка Visual Basic 6.0 появилась в продаже на Озоне. При цене 28.1 руб смешно ее не купить, если вы начинаете изучать VB . В книжке описаны 129 стандартных функций VB с примерами использования. Так что начинающие - вперед.

Удачи ....

 

Для тех, у кого есть любые вопросы, имеюшие отношение к тематике Visual Basic, хочу порекомендовать место, где на них можно получить ответ. Причем в течении совершенно разумного и небольшего промежутка времени - от нескольких часов до нескольких дней. Место это - конференция RU.Visual.Basic, расположенная на сайте Visual Basic на русском. Для сомневающихся в эффективности такого метода получения ответов, информирую, что за сентябрь месяц среднее ежедневное количество сообщений составлило 43 - общее за месяц - 1293.
Хочу поставить в известность всех подписчиков этого листа - лист создается в html, а потом автоматом на Ситикоте из него создается текстовый вариант. Так что, если вы, по ошибке, подписались на текстовую версию - рекомендую изменить этот параметр, так как за качество конвертации я не отвечаю, а создавать отдельную версию у меня не хватает времени. Сорри.
 

Борис Рудой,
Visual Basic на русском

 

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

Борис Рудой

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



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу
Рейтингуется SpyLog

В избранное