Загрузка больших файлов

lnix
Дата: 24.04.2011 19:43:56
Столкнулся с проблемой, данные из 200 Мб файла через поток нужно загрузить в массив.. ВСЕ ГРУЗИТСЯ
а вот больший размер выдает ошибку. Может ли кто подсказать как эту проблему обойти или это уже системное ограничение Windows. (ОС Windows 7 Ext x64)
Заранее благодарен.
MMM_Corp
Дата: 24.04.2011 20:02:29
гугли: File Maping
lnix
Дата: 24.04.2011 20:06:16
Мне нужно данные скачать из файла в массив.
Файл 200 Mb грузится без проблем, больше дает ошибку. При чем здесь FileMapping?
Maxim Rusov
Дата: 24.04.2011 20:34:28
Код в студию
lnix
Дата: 25.04.2011 15:33:18
  FS := TFileStream.Create(FFileSamples, fmOpenRead);
  SL := TStringList.Create;
  SL.LoadFromStream(FS);

стандартный код
Нелояльный
Дата: 25.04.2011 15:49:52
Напишите так:
SL := TStringList.Create;
SL.LoadFromFile(FFileSamples);
Это даст некоторую экономию памяти, что позволит загрузить файл большего размера. Если надо еще больше, тогда отказывайтесь от всяких там TStringList.
Maxim Rusov
Дата: 25.04.2011 15:50:06
И где тут, спрашивается, массив?... Ну, значит памяти не хватает, больше 200M - это сколько? Гигабайт? В пиковый момент тебе понадобиться в 2-3 раза больше памяти чем размер файла. А если дельфи юникодная - то может и больше. А ее всего 2Г. Вот и считай.
defecator
Дата: 25.04.2011 15:50:57
lnix
  FS := TFileStream.Create(FFileSamples, fmOpenRead);
  SL := TStringList.Create;
  SL.LoadFromStream(FS);

стандартный код


А чем не устроил

SL.LoadFromFile(<имя файла>)

???
Maxim Rusov
Дата: 25.04.2011 15:51:54
Нелояльный
Напишите так:
SL := TStringList.Create;
SL.LoadFromFile(FFileSamples);
Это даст некоторую экономию памяти, что позволит загрузить файл большего размера.

С чего бы вдруг?

Нелояльный
Если надо еще больше, тогда отказывайтесь от всяких там TStringList.

А это - верно.
Нелояльный
Дата: 25.04.2011 16:04:41
Maxim Rusov
С чего бы вдруг?
Да, экономии не будет, LoadFromFile делается через тот же TFileStream.