Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проблема с большим массивом на VB 6 Добавлено: 08.10.08 14:03  

Автор вопроса:  User
Всем привет! Необходимо создать массив из кол-ва значений более миллиарда. И заполнить ими любой элемент формы то есть текстовое поле комбо листбокс что угодно лишь бы это дикое количество значений обозначалось. При попытке просто написать что-то вроде:
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
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #1
Добавлено: 08.10.08 14:38
а теперь подумай вот над чем, допустим создаем миллиард значений long
1 long = 4 байта, 4*1000000000=3,75 Гб
у тебя есть 4 гига свободной памяти? не думаю...

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 08.10.08 15:14
Подобный массив можно сделать на суперкомпьютере =)
Прости, а зачем тебе такой массив? Просто заполнить элемент не пойдет? И значения должны быть обязательно уникальными?

Ответить

Номер ответа: 3
Автор ответа:
 astoro



ICQ: 649109 

Вопросов: 31
Ответов: 391
 Профиль | | #3 Добавлено: 08.10.08 20:15
Обычно такие объемы данных держат не в памяти, а в базе данных на винте.
Оффтоп: а все таки расскажи че за задача?

Ответить

Номер ответа: 4
Автор ответа:
 User



Вопросов: 8
Ответов: 7
 Профиль | | #4 Добавлено: 09.10.08 10:54
Надо заполнить каким-то образом массив чисел идущих по порядку от 1 до миллиарда и более. Если делать в цикле фор шаг(степ) большой тыщ на 10 то все получается а если подряд то естественно виснет. Задача состоит в том чтобы каждому числу в указанном массиве присвоить числовой трехзначный код. То есть например вы задаете 1 а вам выдается код 123, задаете 2 а вам код 456 и так до миллиарда и более. Зачем так нужно, извините обьяснить не могу. Массив с трехзначными кодами я естественно заполнил. А вот с большим массивом о котором идет речь в теме возникла такая проблема. Знаю что подобное сравнение как-то реализуется на С или С++. Но к сожалению абсолютно не знаю этого языка.

Ответить

Номер ответа: 5
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #5
Добавлено: 09.10.08 13:00
То, что ты хочешь (точнее, то КАК ты хочешь), не реализуется нигде. Изначально выбрана неверная архитектура программы. Мой совет, юзай коллекции.

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 09.10.08 13:09
Но в любом случае это будет нереально жрать память, так что вся эта затея глупа, ИМХО. Создавай индекс на диске. Причем проси кого-то написать тебе библиоеку на сях/асме, иначе это все будет крайне медленно....

Ответить

Номер ответа: 7
Автор ответа:
  j3d1



ICQ: 8370005 

Вопросов: 34
Ответов: 466
 Профиль | | #7 Добавлено: 09.10.08 15:24
User
а что тебе мешает генерировать эти значения каждый раз?!!
если ты знаешь закон распределения...

Ответить

Номер ответа: 8
Автор ответа:
  j3d1



ICQ: 8370005 

Вопросов: 34
Ответов: 466
 Профиль | | #8 Добавлено: 09.10.08 15:25
да и обработать такой массив можно, разбей его на несколько частей и загружай в память запрашиваемую часть с винта

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам