![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
В этом коде out of memory. Не могу понять как сделать чтение по строчкам?.
Код:
var All, f1, f2, f3: TStringList;
i: integer;
begin
All := TStringList.Create;
f1 := TStringList.Create;
f2 := TStringList.Create;
f3 := TStringList.Create;
All.LoadFromFile(OpenDialog1.FileName);
for i := 0 to All.Count - 1 do
begin
if CheckBox1.Checked then
begin
if Pos(Edit1.Text, All.Strings[i]) > 0 then f1.Add(All.Strings[i]);
end;
if CheckBox2.Checked then
begin
if Pos(Edit2.Text, All.Strings[i]) > 0 then f2.Add(All.Strings[i]);
end;
if CheckBox3.Checked then
begin
if Pos(Edit3.Text, All.Strings[i]) > 0 then f3.Add(All.Strings[i]);
end;
end;
All.Free;
if CheckBox1.Checked then
begin
f1.SaveToFile('Organization.txt');
end;
if CheckBox2.Checked then
begin
f2.SaveToFile('Working.txt');
end;
if CheckBox3.Checked then
begin
f3.SaveToFile('Types.txt');
end;
f1.Free;
f2.Free;
f3.Free;
end; |
|
#2
|
|||
|
|||
|
Какой размер входного файла?
|
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Taras2020 (24.02.2018)
| ||
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
Ну да, тогда получается, что в самом плохом случае только на данные тебе надо более 2 ГБ, что под 32 бита без специальных усилий не сделать. Соответсвенно, читать и писать файлы надо действительно по сточно, нефиг забивать ими память.
Код:
var
FIn, FOrg, FWrk, FTyp : TextFile;
S : String;
begin
If Not OpenDialog1.Execute Then Exit;
AssignFile(FIn,OpenDialog1.FileName);
AssignFile(FOrg,'Organization.txt');
AssignFile(FWrk,'Working.txt');
AssignFile(FTyp,'Types.txt');
Reset(FIn);
Rewrite(FOrg);
Rewrite(FWrk);
Rewrite(FType);
While Not EOF(FIn) Do
Begin
ReadLn(FIn,S);
if CheckBox1.Checked then
if Pos(Edit1.Text, S) > 0 then WriteLn(FOrg,S);
if CheckBox2.Checked then
if Pos(Edit2.Text, S) > 0 then WriteLn(FWrk,S);
if CheckBox3.Checked then
if Pos(Edit3.Text, S) > 0 then WriteLn(FTyp,S);
End;
CloseFile(FIn);
CloseFile(FOrg);
CloseFile(FWrk);
CloseFile(FTyp);
end; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Taras2020 (26.02.2018)
| ||
|
#5
|
|||
|
|||
|
Цитата:
|