Страницы

Поиск по вопросам

понедельник, 11 февраля 2019 г.

Чтение построчно out of memory

В данном коде при обработке файла в 200 мегабайт выскакивает ошибка: out of memory. Как исправить Данную ошибку в этом коде ?
var list:TStrings; i:integer; str:string;
begin list :=TStringList.Create; list.LoadFromFile(OpenDialog1.FileName);
for i :=list.count-1 downto 0 do begin str :=list.Strings[i];
while Pos(edit1.text, str) >0 do begin Delete(str, Pos(edit1.text, str), Length(edit1.text)) ; list.Strings[i] :=str; end; end;
list.SaveToFile('out.txt'); list.free; end;


Ответ

var txtIn, txtOut: TextFile; str: string; begin AssignFile(txtIn, OpenDialog1.FileName); AssignFile(txtOut, ExtractFilePath(OpenDialog1.FileName) + 'tmp.txt');
Reset(txtIn); Rewrite(txtOut);
while not EOF(txtIn) do begin ReadLn(txtIn, str); // ... WriteLn(txtOut, str); end;
CloseFile(txtOut); CloseFile(txtIn);
// move 'tmp.txt' to OpenDialog1.FileName end;

Комментариев нет:

Отправить комментарий