powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ComboBox медлено загружает ...
9 сообщений из 9, страница 1 из 1
ComboBox медлено загружает ...
    #35887786
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем здравствуйте !

Столкнулся с проблемой при загрузки в комбо около 6000 записей,
где-то 10 сек., хотя из БД строку получаю почти за доли сек.

Вот мой код:

Ret ' Это переменная содержит строку данных с разделителями "|" типа :
a|b|c| ..... т.е. 6000 тыс. строк, каждая разделенная "|"
Код: plaintext
1.
2.
3.
    For cik =  1  To UBound(Split(Ret, "|"))
    cmbCatDen.AddItem Piece(Ret, "|", cik)
    Next cik
 

Как решить вопрос производительности загрузки в комбо ?

Спасибо .
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35887877
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное нужно использовать Array , то бишь масив строк ....
Сейчас копаю .
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35887920
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уверен, что тормозит функция Piece. Код в студию.
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35887929
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос снят !!!!


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Command2_Click()
Dim Ret As String, Er As String
 
.
.
.

Dim fields() As String

fields() = Split(Ret, "|")

For i =  0  To UBound(fields)
    cmbCatDen.AddItem Trim$(fields(i))
Next

  
End Sub
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35887931
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
желательно и побольше кода с вашим циклом явно не то. заранее вычислите размерность массива, да и массив желательно сразу получить, а не работать со строковой переменной каждый раз.
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35887938
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub Command2_Click()
Dim Ret As String, Er As String
 
.
.
.

Dim fields() As String
Dim L as Integer
Dim i as Integer

fields = Split(Ret, "|")
L=Ubound(fields)

With cmbCatDen
For i =  0  To L
    .AddItem Trim$(fields(i))
Next
End With
  
End Sub
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35888145
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо !
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35888347
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если интерестно вот код моей функции (правда,очень давно написан):


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Function Piece(chars As String, Delimiter As String, position As Long)
   
    If position <  1  Then
        Piece = ""
        Exit Function
    End If

    ReDim Where( 0  To position +  1 ) As Long
    Where( 0 ) =  1 
    current =  1 
    Length = Len(Delimiter)

    For Count =  1  To position
        Where(Count) = InStr(current, chars, Delimiter)
        If Where(Count) =  0  Then Where(Count) = Len(chars) +  1 
        current = Where(Count) + Len(Delimiter)
    Next Count
 
    If position =  1  Then
        Length =  0 
    End If
    
    If (Where(position) = Where(position -  1 )) Then
        back = ""
    Else
        back = Mid(chars, (Where(position -  1 ) + Length), (Where(position) - Where(position -  1 ) - Length))
    End If
    
    Piece = back

End Function
...
Рейтинг: 0 / 0
ComboBox медлено загружает ...
    #35889242
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не увидел разницы в скорости между вычисляемой в цикле верхней границей цикла
Код: plaintext
For i =  0  To UBound(fields)
и заранее вычисленной верхней границей цикла:
Код: plaintext
1.
L=Ubound(fields)
For i =  0  To L
где L = 32000
Я думаю, что компилятор заботится о такой оптимизации самостоятельно.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ComboBox медлено загружает ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]