Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.02.2018, 17:21
Taras2020 Taras2020 вне форума
Прохожий
 
Регистрация: 15.01.2018
Сообщения: 36
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Правильное оформление кода ? (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  
Старый 24.02.2018, 20:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Какой размер входного файла?
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Taras2020 (24.02.2018)
  #3  
Старый 24.02.2018, 22:16
Taras2020 Taras2020 вне форума
Прохожий
 
Регистрация: 15.01.2018
Сообщения: 36
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Какой размер входного файла?
700 мегабайт.
Ответить с цитированием
  #4  
Старый 25.02.2018, 21:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну да, тогда получается, что в самом плохом случае только на данные тебе надо более 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  
Старый 26.02.2018, 14:17
Taras2020 Taras2020 вне форума
Прохожий
 
Регистрация: 15.01.2018
Сообщения: 36
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну да, тогда получается, что в самом плохом случае только на данные тебе надо более 2 ГБ, что под 32 бита без специальных усилий не сделать. Соответсвенно, читать и писать файлы надо действительно по сточно, нефиг забивать ими память.
Огромное спасибо. Все отлично работает.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter