Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];

Вниз

Stream   Найти похожие ветки 

 
Evgeny   (2003-08-07 10:04) [0]

Подскажите, кто сталкивался. Когда у потока происходит ошибка "EStreamError" с сообщением "Out of memory while expanding memory stream". При этом заполнение потока на уровне 14 Мб. Заполнение потока происходит методом CopyFrom из другого потока. Памяти в машине больше некуда.


 
Skier   (2003-08-07 10:06) [1]

А код мы увидим ? Али как ?


 
Evgeny   (2003-08-07 10:08) [2]

Заполнение потока происходит методом "CopyFrom" из другого потока. Этого разве мало?


 
Skier   (2003-08-07 10:12) [3]

Мало.


 
Digitman   (2003-08-07 10:13) [4]


> Памяти в машине больше некуда


размер ОЗУ имеет малое отношение к сабжу.
значит, в момент загрузки результирующего потока в ВАП твоего процесса нет свободного непрерывного региона размером большего или равного запрошенного при реаллокации памяти под рез.поток


 
Evgeny   (2003-08-07 10:15) [5]

Ну примерно так, но что это изменяет:
for I := 0 to XXX do
begin
...
Stream.CopyFrom(TempStream, Size);
// при достижение 14 Мб, ошибка
...
end;


 
Skier   (2003-08-07 10:16) [6]

for I := 0 to XXX do
begin
...
Stream.Position := 0; //иначе XXX*Size !
Stream.CopyFrom(TempStream, Size);
// при достижение 14 Мб, ошибка
...
end;


 
Evgeny   (2003-08-07 10:17) [7]

>Digitman © (07.08.03 10:13)

тогда только один выход. Вместо TStream использовать TFileStream.


 
MBo   (2003-08-07 10:19) [8]

Size или SetSize на разумный размер перед заполнением не поможет?


 
Evgeny   (2003-08-07 10:20) [9]

>Skier © (07.08.03 10:16)

Stream.Position := 0; //иначе XXX*Size !

ни в коем случае, мне именно накопление требуется. Где то порядка 40 Мб.


 
Skier   (2003-08-07 10:22) [10]

>Evgeny © (07.08.03 10:20)
Понял. Тогда посмотри MBo © (07.08.03 10:19)


 
Evgeny   (2003-08-07 10:24) [11]

>MBo © (07.08.03 10:19)

Размер заранее неизвестен. Происходит поточная обработка файлов из каталога в один файл. Количество и размер файлов неизвестен. То что я ранее написал 40 Мб - это так для примера может быть гораздо больше. Скорее всего TFileStream единственный выход.


 
Digitman   (2003-08-07 10:28) [12]


> Evgeny


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


 
Anatoly Podgoretsky   (2003-08-07 10:30) [13]

А это что тогда такое Size?


 
Evgeny   (2003-08-07 10:36) [14]

>Anatoly Podgoretsky © (07.08.03 10:30)
А это что тогда такое Size?

Не понял, что то не так?


 
Skier   (2003-08-07 10:37) [15]

>Evgeny © (07.08.03 10:36)
Может быть так :
Stream.CopyFrom(TempStream, TempStream.Size); ?


 
Evgeny   (2003-08-07 10:39) [16]

Я написал псевдо-код, а не рабочий.


 
Skier   (2003-08-07 10:41) [17]

>Evgeny © (07.08.03 10:39)
Тогда ты будешь получать псевдо-ответы


 
Evgeny   (2003-08-07 10:45) [18]

Ответ я уже получил, спасибо всем за участие. А псевдо-код - это не обязательно бред, чаще всего это упрощенный код, нужный для понятия логики работы.


 
Serginio1   (2003-08-07 12:51) [19]

Посмотри
http://www.1c.hippo.ru/cgi-bin/predownl.cgi?id=2019

Там есть MemoryStream для работы с большими объемами. Отличие от обыкновенного в том, что используе память блоками а не непрерывную как в TMemoryStream. При использовании непрерывной памяти происходит проблемы с перераспределением оной.


 
Evgeny   (2003-08-08 11:35) [20]

>Serginio1 (07.08.03 12:51)

Понял, спасибо, посмотрю.



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

Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.008 c
3-68198
ray_w
2003-07-25 19:40
2003.08.21
DBGrid?


14-68481
Карелин Артем
2003-08-06 16:15
2003.08.21
Где найти русифицированные модули к дельфи?


14-68512
Yuraz
2003-08-05 16:58
2003.08.21
Прикрыли на работе лазейку к ICQ, посоветуете


14-68493
Evg12
2003-08-06 02:46
2003.08.21
А видал ли кто компонент такой?


3-68154
abc
2003-07-28 14:27
2003.08.21
как обновить только одну запись





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский