Страница: 1 |
Вопрос: Проблема с большим массивом на VB 6 | Добавлено: 08.10.08 14:03 |
Автор вопроса: ![]() |
Всем привет! Необходимо создать массив из кол-ва значений более миллиарда. И заполнить ими любой элемент формы то есть текстовое поле комбо листбокс что угодно лишь бы это дикое количество значений обозначалось. При попытке просто написать что-то вроде:
Dim code(0 To 1000000) As Long For i = 0 To 1000000 code(i) = i + 1 combo1.additem code(i) Next i машине не хватает ресурсов. Пробовал менять типы массивов: byte говорит что overflow а variant string long реакция одинаковая: при попытке ввести значение более 100000 нехватка ресурсов а то и полное зависание. Теперь вопрос можно ли средствами visual basic 6.0 Создать огромный массив с количеством значений более миллиарда? |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 300-70-6пятьЪ Вопросов: 62 Ответов: 545 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 08.10.08 14:38 |
а теперь подумай вот над чем, допустим создаем миллиард значений long
1 long = 4 байта, 4*1000000000=3,75 Гб у тебя есть 4 гига свободной памяти? не думаю... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 08.10.08 15:14 |
Подобный массив можно сделать на суперкомпьютере ![]() Прости, а зачем тебе такой массив? Просто заполнить элемент не пойдет? И значения должны быть обязательно уникальными? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 649109 Вопросов: 31 Ответов: 391 |
Профиль | Цитата | #3 | Добавлено: 08.10.08 20:15 |
Обычно такие объемы данных держат не в памяти, а в базе данных на винте.
Оффтоп: а все таки расскажи че за задача? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 8 Ответов: 7 |
Профиль | Цитата | #4 | Добавлено: 09.10.08 10:54 |
Надо заполнить каким-то образом массив чисел идущих по порядку от 1 до миллиарда и более. Если делать в цикле фор шаг(степ) большой тыщ на 10 то все получается а если подряд то естественно виснет. Задача состоит в том чтобы каждому числу в указанном массиве присвоить числовой трехзначный код. То есть например вы задаете 1 а вам выдается код 123, задаете 2 а вам код 456 и так до миллиарда и более. Зачем так нужно, извините обьяснить не могу. Массив с трехзначными кодами я естественно заполнил. А вот с большим массивом о котором идет речь в теме возникла такая проблема. Знаю что подобное сравнение как-то реализуется на С или С++. Но к сожалению абсолютно не знаю этого языка. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 09.10.08 13:00 |
То, что ты хочешь (точнее, то КАК ты хочешь), не реализуется нигде. Изначально выбрана неверная архитектура программы. Мой совет, юзай коллекции. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 09.10.08 13:09 |
Но в любом случае это будет нереально жрать память, так что вся эта затея глупа, ИМХО. Создавай индекс на диске. Причем проси кого-то написать тебе библиоеку на сях/асме, иначе это все будет крайне медленно.... |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8370005 Вопросов: 34 Ответов: 466 |
Профиль | Цитата | #7 | Добавлено: 09.10.08 15:24 |
User
а что тебе мешает генерировать эти значения каждый раз?!! если ты знаешь закон распределения... |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8370005 Вопросов: 34 Ответов: 466 |
Профиль | Цитата | #8 | Добавлено: 09.10.08 15:25 |
да и обработать такой массив можно, разбей его на несколько частей и загружай в память запрашиваемую часть с винта |
Страница: 1 |
|