![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi + ZipForge (out of memory)
Nutz © (2009-11-10 15:32:00)столкнулся с проблемой:
необходимо сохранить порядка 90 000 иконок (размер около 3 кб) товаров в архив. Делаю примерно так:
procedure TForm1.Button1Click(Sender: TObject);
const
Path = 'C:\Program Files\images\';
var
F, F2: TFileStream;
FN: string;
I, T: Integer;
begin
T := GetTickCount;
F := TFileStream.Create('D:\Test.zip', fmCreate);
try
ZipForge1.OpenArchive(F, True);
try
ZipForge1.BeginUpdate;
try
ZipForge1.
for I := 1 to 90000 do
begin
Application.ProcessMessages;
FN := Format('icon%d.jpg', [I]);
F2 := TFileStream.Create(Path + FN, fmOpenRead or fmShareDenyNone);
try
ZipForge1.AddFromStream(FN, F2);
finally
F2.Free;
end;
if I mod 500 = 0 then
Caption := 'Иконок в архиве: ' + IntToStr(I);
end;
ZipForge1.EndUpdate;
except
ShowMessage('Call ZipForge.CancelUpdate');
ZipForge1.CancelUpdate;
end;
finally
ZipForge1.CloseArchive;
end;
finally
F.Free;
ShowMessageFmt('Время: %d', [GetTickCount - T]);
end;
end;
Не хватает памяти. переодически появляется out of memory
brother (2009-11-12 11:52:00) [1]> каждый из вновь добавляемых фалов еще и копировался в clipboard,
> поэтому забивалась память.
тыб промолчал а? а то бред получается
и
> проблему решил отключением опции CopyToBuffer
а мы то про нее откуда знаем? в коде ее нет
Nutz (2009-11-12 11:49:00) [2]проблему решил отключением опции CopyToBuffer. Как оказалось каждый из вновь добавляемых фалов еще и копировался в clipboard, поэтому забивалась память.
Dennis I. Komarov (2009-11-12 11:45:00) [3]Вообще на сколько я помню ZipForge не фришная штука
И еще, когда-то на нем библиотеку делал, так на нее Паучек ругался, дескать плохая она у тебя...
brother (2009-11-12 06:58:00) [4]это 263,671875 мегабайта
предположу, что компонент при работе, создает временные буферы, которые жрут память...
зы может на консольный винрар тебе уйти?
Ухарь (2009-11-10 20:14:00) [5]Не хватает памяти на какой строке?