Вниз
Скачать: CL | DM;

как обойти ограничение в 2 Гб. для стримов?   Найти похожие ветки 

← →
Scott Storch   (2011-02-15 11:51) [0]

приложение загружает файлы статистики по интернет-магазинам. если загружается слишком большой файл (> 2 Гб.) - сыпется стрим. что посоветуете?


← →
clickmaker ©   (2011-02-15 11:52) [1]

какой стрим? TFileStream? и что значит "сыпется"?


← →
oldman ©   (2011-02-15 11:53) [2]

Загружать кусками


← →
Scott Storch   (2011-02-15 12:01) [3]


> какой стрим?


TMemoryStream


> что значит "сыпется"?


когда TMemoryStream.Size > 2 Гб. - сообщение out of memory


← →
Стрим   (2011-02-15 12:02) [4]

2 Гб - ограничение на доступное адресное пространство процесса для 32-битных ОС MS Windows XP, Vista...

То есть, если ты TMemoryStream использовал, то, значит, неправильно использовал, потому что он больше 2 ГБайт не сможет хранить.

TFileStream тут не при чем, он внутри как 32-битный, так и 64-битный. То есть, 2 ГБайта для него - не предел. То есть, если ты использовал где-то в своей программе integer для работы с потоком, то это и твоя ошибка.

Так что грузи не весь файл статистики, а разбирай его по записям, последовательно. При правильной реализации, проблем с памятью не будет. Никогда.

P.S. Сообщение об ошибке: "Ахтунг! Стрим рассыпался!"...


← →
oldman ©   (2011-02-15 12:04) [5]

Что же это за статистика такая, больше 2-х гиг?


← →
clickmaker ©   (2011-02-15 12:05) [6]

> [3] Scott Storch   (15.02.11 12:01)

рекомендую глянуть в сторону memory-mapped files


← →
Стрим   (2011-02-15 12:13) [7]

>out of memory

Это переводится не как "стрим рассыпался", а как "нету памяти".
Если тебя интересует именно обзод ограничения в 2 ГБайта, то надо писать 64-разрядный софт под 64-разрядные ОС, для чего воспользоваться 64-разрядным компилятором. Delphi такого не умеет. Хотя, говорят, что, возможно, в некоем обозримом будущем, таки научится. Но, если честно, то лучше не ждать выхода 64-разрядного компилятора Delphi, а переписать программу, реализовав последовательный анализ по записям. Потому что программа анализа статистики, пожирающая ОЗУ в объемах, равных размеру файла статистики - не программа, а монстр какой-то. Тебе так никакой ОС не хватит. Ни 32-разрядной, ни 64-разрядной, ни 128...

Представь себе человека, который вначале бессознательно зазубривает наизусть весь роман "Войну и Мир", а потом закрывает глаза, и, вспоминая зазубренное, начинает  проникаться атмосферой произведения и гением автора. Тупо? Твоя программа именно так и делает.


← →
Palladin ©   (2011-02-15 12:22) [8]

вас бы обратно в дос, мигом экономить научились бы... беспредельщики )


← →
brother ©   (2011-02-15 12:26) [9]

во времена дос и железо скромнее было;) а сейчас - уже можно ;)


← →
oldman ©   (2011-02-15 13:30) [10]


> brother ©   (15.02.11 12:26) [9]


Во времена дос таких файлов не было :)))


← →
Германн ©   (2011-02-15 13:48) [11]


> Во времена дос таких файлов не было

Во времена дос таких дисков даже не было, не то что файлов! )))


← →
Dimka Maslov ©   (2011-02-15 15:00) [12]


> вас бы обратно в дос, мигом экономить научились бы... беспредельщики
> )


Кто видел ссылку на рассказ про один байт?


← →
clickmaker ©   (2011-02-15 15:11) [13]

http://www.wasm.ru/article.php?article=onebyte


← →
KSergey ©   (2011-02-15 17:22) [14]

> clickmaker ©   (15.02.11 15:11) [13]

Ахинея.


← →
Jeer ©   (2011-02-15 17:58) [15]


> clickmaker ©   (15.02.11 15:11) [13]


Заворот мозга у автора.


← →
Anatoly Podgoretsky ©   (2011-02-15 19:24) [16]


> TMemoryStream

И тебя не смущает слово Memory?
В 32 битной программи Memory не может быть более 2 гб, если не считать некоторых экзотических случаев.


← →
KilkennyCat ©   (2011-02-15 19:54) [17]

не то чтоб ахинея или заворот мозга, просто бессмыслица. любой может так пожаловаться. особенно если не своим делом занимается или начинает сравнивать с другими областями.


← →
имя   (2011-02-15 22:38) [18]

Удалено модератором


← →
Вариант   (2011-02-16 09:09) [19]


> clickmaker ©   (15.02.11 15:11) [13]

Понравилось:-)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.005 c
15-1297027776
Юрий
2011-02-07 00:29
2011.05.22
С днем рождения ! 7 февраля 2011 понедельник


15-1296941377
Юрий
2011-02-06 00:29
2011.05.22
С днем рождения ! 6 февраля 2011 воскресенье


15-1297075464
istok
2011-02-07 13:44
2011.05.22
мониторинг принтеров...


1-1254725450
Aleks
2009-10-05 10:50
2011.05.22
Как вывести а потом стереть текст на канве Image?


2-1297771744
well
2011-02-15 15:09
2011.05.22
TTreeView как выделить несколько узлов?




   Наверх