|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Правильное оформление кода ? (Delphi XE)
В этом коде 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
|
|||
|
|||
Цитата:
|