О пределах Open или ListBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

О пределах Open или ListBox

Сообщение Maxxx.!!!. » 16.02.2007 (Пт) 21:27

Есть ListBox в котором много строк, более 60000. При записи в файл всех значений, VB вылетает с ошибкой Overflow. А если цикл уменьшить тысяч до 30000 или около того - тогда все работает. Из-за чего это: через Open нельзя записывать так много?
frmStat.lstStatList - это ЛистБокс
В frmStat.txtStatWor.Text хранится число строк ListBox'a

P.P.S. А как узнать кол-во элементов ListBox, а то я вычисляю их по другим данным?
Код: Выделить всё

Open "c:\zzz.html" For Output As #1
Print #1, "<html><head><title>Ля-Ля-Ля</title></head>"
Dim i As Long
For i = 0 To Val((frmStat.txtStatWor.Text)) - 1
Print #1, "<p>" & frmStat.lstStatList.List(i) & "</p>"
Next i
Print #1, "</html>"
Close #1
Никогда так не врут, как во время войны, после охоты и перед выборами...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 16.02.2007 (Пт) 22:12

ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.02.2007 (Сб) 7:29

Количество элементов - свойство ListCount.
Весь мир матрица, а мы в нем потоки байтов!

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 17.02.2007 (Сб) 12:00

BV писал(а):ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.



Странно, потому что, вроде бы, в ListBox выводятся все искомые слова, а их у меня за 60.000... Может быть есть какой-нибудь другой контрол? А то очень надо...
Никогда так не врут, как во время войны, после охоты и перед выборами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 17.02.2007 (Сб) 12:15

BV писал(а):ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.


точно ли? Вроде как LISTBOX имеет данное ограничение только на Win95 и ее потомках? Хотя, конечно в VB соответствующее свойство ListBox действительно имеет предел Integer. Никто не пробовал задать размер более 32768 при помощи отправки сообщения?
Весь мир матрица, а мы в нем потоки байтов!

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 17.02.2007 (Сб) 12:40

!Viper! писал(а):
BV писал(а):ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.


точно ли? Вроде как LISTBOX имеет данное ограничение только на Win95 и ее потомках? Хотя, конечно в VB соответствующее свойство ListBox действительно имеет предел Integer. Никто не пробовал задать размер более 32768 при помощи отправки сообщения?


А как это, "при помощи отправки сообщения"?
Никогда так не врут, как во время войны, после охоты и перед выборами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.02.2007 (Сб) 13:14

!Viper! писал(а):
BV писал(а):ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.


точно ли? Вроде как LISTBOX имеет данное ограничение только на Win95 и ее потомках? Хотя, конечно в VB соответствующее свойство ListBox действительно имеет предел Integer. Никто не пробовал задать размер более 32768 при помощи отправки сообщения?

Размер, может, и можно задать -- только какой в этом смысл, если к элементам с номерами больше 32768 доступ никак не получить?
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 17.02.2007 (Сб) 14:02

Maxxx.!!!. писал(а):Может быть есть какой-нибудь другой контрол? А то очень надо...


hCORe написал хорошую альтернативу.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 17.02.2007 (Сб) 15:36

Может быть есть какой-нибудь другой контрол? А то очень надо...
ListView, разнообразные гриды... Но смысла держать такое количество строк на экране, категорически не вижу.
Лучший способ понять что-то самому — объяснить это другому.

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 17.02.2007 (Сб) 22:02

Antonariy писал(а):
Может быть есть какой-нибудь другой контрол? А то очень надо...
ListView, разнообразные гриды... Но смысла держать такое количество строк на экране, категорически не вижу.


Я тоже не видел смысла, до того дня когда это действительно понадобилось :lol:
Никогда так не врут, как во время войны, после охоты и перед выборами...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.02.2007 (Сб) 22:16

Maxxx.!!!. писал(а):до того дня когда это действительно понадобилось :lol:


http://bbs.vbstreets.ru/viewtopic.php?p=163125#163125 писал(а):In a typical, for example, user interface type of application, if it's a list box, more than 10,000 items in a list box is unusable anyway. So, it's no point in optimizing the 20,000,000 list box items case, because if you get to the point when you need to put 20,000,000 items in a list box, you've already lost. I'm glad people laugh with agreement; although you'd be surprised how many people asked me, "How do I put 20,000,000 items in a list box?"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 18.02.2007 (Вс) 11:28

http://bbs.vbstreets.ru/viewtopic.php?p=163125#163125 писал(а):In a typical, for example, user interface type of application, if it's a list box, more than 10,000 items in a list box is unusable anyway. So, it's no point in optimizing the 20,000,000 list box items case, because if you get to the point when you need to put 20,000,000 items in a list box, you've already lost. I'm glad people laugh with agreement; although you'd be surprised how many people asked me, "How do I put 20,000,000 items in a list box?"
[/quote]

Спасибо!
Никогда так не врут, как во время войны, после охоты и перед выборами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.02.2007 (Пн) 9:45

BV писал(а):ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.

Хранить может, просто до них не добраться.
Lasciate ogni speranza, voi ch'entrate.

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 19.02.2007 (Пн) 17:49

alibek писал(а):
BV писал(а):ЕМНИП, ListBox не может хранить более Integer-предела (32768) пунктов.

Хранить может, просто до них не добраться.


А мне, кстати, и нужно, чтобы можно было только на эти записи в List'e посмотреть, а данные я беру из массива :)
Никогда так не врут, как во время войны, после охоты и перед выборами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.02.2007 (Пн) 18:54

Кому-то нужно просмотреть в списке 60000 записей? Не верю.
Изображение

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 20.02.2007 (Вт) 17:57

tyomitch писал(а):Кому-то нужно просмотреть в списке 60000 записей? Не верю.


Ну, а где еще столько записей просмотреть? Просто у меня программа должна поддерживать большое кол-во записей, но в оснвном их, конечно, будет не больше 2-3 тысяч.
Никогда так не врут, как во время войны, после охоты и перед выборами...

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 28.02.2007 (Ср) 9:45

Я тут прикинул насчет 60000... Если тратить на просмотр одной записи 0,5 сек. , то потребуется более 8 часов непрерывного просмотра :shock: :shock:
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 28

    TopList