|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.01.2010, 09:16 | #1 |
Новичок
Джуниор
Регистрация: 18.01.2010
Сообщений: 7
|
Как создать огромный массив?
Добрый день всем! Собственно описание проблемы:
есть класс MyClass, состоящий из 9 полей следующих типов: boolean; integer; integer; boolean; boolean; boolean; boolean; integer; boolean. Необходимо создать массив (желательно динамический) типа array of MyClass, который будет содержать 100000000-200000000 записей. Стандартными путями он создается, но при заполнении массива где то на 49000000 элементе выскакивает ошибка нехватки памяти. Процесс при этом занимает около 2 гигов. Что можно сделать в данной ситуации? Заранее спасибо. |
18.01.2010, 09:44 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Если не секрет зачем такой огромный массив?
I'm learning to live...
|
18.01.2010, 09:53 | #3 |
Новичок
Джуниор
Регистрация: 18.01.2010
Сообщений: 7
|
не секрет, для дисера
|
18.01.2010, 09:57 | #4 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
работайте значит не с памятью, а с файловым потоком...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
18.01.2010, 10:00 | #5 |
Новичок
Джуниор
Регистрация: 18.01.2010
Сообщений: 7
|
а можно поконкретнее, как сделать чтобы массив не с памятью работал. и потом, скорость работы с ним будет уже совсем другая правильно? можно ли сделать чтобы он сколько мог брал оперативки, а остальное - с винта?
|
18.01.2010, 10:04 | #6 |
Форумчанин
Регистрация: 02.01.2010
Сообщений: 254
|
Попробуй создать файл подкачки и работать с ним, как с памятью. Ниже пример кода, для создания такого файла:
Код:
|
18.01.2010, 10:15 | #7 |
Новичок
Джуниор
Регистрация: 18.01.2010
Сообщений: 7
|
извиняюсь за глупый вопрос, чтобы работать с памятью я просто могу написать setlength(mas,100000000) или мне нужно указать еще что-то?
|
18.01.2010, 10:17 | #8 | |||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Даже для докторской такие огромные массивы не выделяют. Зачем такой огромный массив? Цитата:
Насчет файлов мысль светлая. Скорость работы с массивом записанным в файл не будет сильно занижена, если ты не будешь использовать медленные алгоритмы обработки. Например будет удобно использовать TFileStream. Он дает приличную скорость работы. Цитата:
I'm learning to live...
|
|||
18.01.2010, 10:21 | #9 |
Новичок
Джуниор
Регистрация: 18.01.2010
Сообщений: 7
|
такой вопрос можно ли не меняя самого кода перевести все на работу с файлами, то есть у меня задан динамический массив a: array of myclass далее я ему делаю setlength. можно как то не править весь код?
|
18.01.2010, 10:23 | #10 |
Форумчанин
Регистрация: 02.01.2010
Сообщений: 254
|
Динамические массивы тут не прокатят. Тебе нужно объявить такие типы:
Код:
Код:
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как создать многомерный динамический массив в Delphi? | Velross | Помощь студентам | 3 | 06.01.2010 20:50 |
как создать массив | lg12 | Помощь студентам | 4 | 17.08.2009 13:50 |
Как создать массив-константу из записей | SNUPY | Общие вопросы Delphi | 3 | 19.03.2009 21:11 |
Как создать массив заполняемый с клавиатуры? | Bravo | Общие вопросы C/C++ | 2 | 14.11.2008 00:23 |
Подскажите, как создать динамический массив? | snaem | Общие вопросы .NET | 9 | 14.05.2008 08:52 |