Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 02:38   #11
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Обалдеть. Провел как скорость изменилась и на сколько отличается между старой версией и новой.

Если первый использовать код у меня текст загрузился в программу за 1 минуту 25 секунд.

Использовал Ваш код - ужас, Я был шокирован.... загрузилось за 7 секунд тот же текстовый файл весом почти 3 мегабайта.

Также проверил на практике старую идею с listbox только с Вашим кодом - но разницы не заметил.

Можете пожалуйста описать как Вы так сделали? Я сравнил код и понял то раньше содержимое текстового файла загружалось сразу в программу и в компонент memo, а сейчас оно загружается в память компьютера (в переменную) и от туда в memo так? и исходя из этого так повысилась скорость?
Чувствую сегодня опять будет бессонная ночь ))

А кстати, а ещё есть способы увеличить скорость загрузки?
просто у меня некоторые текстовые файлы по 50 мб - по 200 мб весят)
Jleksern вне форума Ответить с цитированием
Старый 25.04.2012, 02:48   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Можете пожалуйста описать как Вы так сделали? Я сравнил код и понял то раньше содержимое текстового файла загружалось сразу в программу и в компонент memo, а сейчас оно загружается в память компьютера (в переменную) и от туда в memo так? и исходя из этого так повысилась скорость?
именно так.
Запомните - "визуальные компоненты" и "скорость" - понятия несовместимые. Раньше в цикле добавлялась одна строчка, мемо отрабатывало добавление строки, перерисовывало отображение, включала при необходимости скролбары и т.д. и т.п.
а если использовать вместо этого невизуальные компоненты (или даже обычную строчку взять и там накапливать результат), то скорость возрастает многократнейше!!!

Цитата:
А кстати, а ещё есть способы увеличить скорость загрузки?
просто у меня некоторые текстовые файлы по 50 мб - по 200 мб весят)
ну откажитесь от отбражения подобных гигантских текстов на форме. вот скорость и повысится. Это же огромные массивы. Человек их даже просмотреть не сможет, не то, чтобы обработать. А раз не сможет, то для кого они на форме нужны? Для инопланетян? Мутантов-гениев?!
впрочем, это уже лучше вам решать, для чего Вы хотите отобразить пару десятков миллионов строк на форме...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.04.2012, 20:12   #13
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
о! так Вы за скоростью гонетесь?!
тогда попробуйте такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var 
  ts, ts1, ts2 : TStringList;
  i, k, CountRec : integer;
  s : string;
  a: integer;
begin
  if OpenDialog1.Execute then begin
     ts := TStringList.Create;
     ts1 := TStringList.Create;
     ts2 := TStringList.Create;
     CountRec := 0;
     ts.LoadFromFile(OpenDialog1.FileName);
     for i:=0 to ts.Count-1 do  begin
        s := ts.Strings[i];
        k := Pos(edit1.Text, s);
        if k >1 then begin
           ts1.Append(Copy(s, 1, k-1));
           ts2.Append(Copy(s,k+1, Length(s)-k ));
           inc(CountRec)
        end;
     end;
     ts.Free;
     Memo1.Lines.Text := ts1.Text;
     Memo2.Lines.Text := ts2.Text;
     ts1.Free;
     ts2.Free;
     label5.Caption:=IntToStr(CountRec);
  end;
end;
если хочется использовать ListBox,
тогда замените строчки
Memo1.Lines.Text := ts1.Text;
Memo2.Lines.Text := ts2.Text;

на
Код:
     ListBox1.Items.Text := ts1.Text;
     ListBox2.Items.Text := ts2.Text;


никак не получается сделать так чтоб с использованием этого кода мог открывать ещё и к примеру 1.txt и 2.txt и 3.txt за раз.


А получается если выделить эти три текстовых файла, открывается лишь один, а не все вместе в memo....
Jleksern вне форума Ответить с цитированием
Старый 29.04.2012, 00:40   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
procedure TForm3.Button1Click(Sender: TObject);
var 
  ts, ts1, ts2 : TStringList;
  fIndex, i, k, CountRec : integer;
  s : string;
begin
  if OpenDialog1.Execute then begin

     ts := TStringList.Create;
     ts1 := TStringList.Create;
     ts2 := TStringList.Create;
     CountRec := 0;

     for fIndex := 0 to OpenDialog1.Files.Count -1 do begin
         ts.LoadFromFile(OpenDialog1.Files[fIndex]);
         for i:=0 to ts.Count-1 do  begin
            s := ts.Strings[i];
            k := Pos(edit1.Text, s);
            if k >1 then begin
              ts1.Append(Copy(s, 1, k-1));
              ts2.Append(Copy(s,k+1, Length(s)-k ));
              inc(CountRec)
            end;
         end;
     end;
     ts.Free;
     Memo1.Lines.Text := ts1.Text;
     Memo2.Lines.Text := ts2.Text;
     ts1.Free;
     ts2.Free;
     label5.Caption:=IntToStr(CountRec);
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти исходник pascal BeaU Помощь студентам 17 07.02.2012 00:53
Не могу найти исходник программы (которая требует логин и пароль для доступа) makar3000 Софт 0 01.12.2011 16:37
Не могу найти исходник программы (которая требует логин и пароль для доступа) makar3000 БД в Delphi 1 01.12.2011 03:11
Нигде не могу найти исходник проги для создания фоторобота CorruptSoul Свободное общение 2 11.03.2008 15:54
Помогите! Не могу откоректировать исходник!!! DzSoft PHP 1 30.09.2007 17:42