Задать вопрос
@Romanson

Как другим способом искать первые два символа строки в цикле Memo?

в общем ищу циклом в каждой строке Memo первые два символа для последующего сравнения, выглядит это так:
с мемо все передаю в basa: TStringList;

Далее

procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
var
  s1, s2, c, v, s, d: string;
  i: integer;
basa: TStringList; 
begin
  AniIndicator1.Enabled := true;
  AniIndicator1.Visible := true;
  basa := TStringList.Create;
  basa.Text := Memo1.Lines.Text; //- сюда передал базу
  ListBox2.Clear; //- сюда нужно выводить после поиска и сравнения
  s2 := ListBox1.Items[ListBox1.ItemIndex]; // выбрал строку
  if length(s2) = 1 then // проверил длину
    s1 := s2
  else

  begin
    s1 := copy(s2, 1, 2); // и тут начались танцы с бубном, первые 2 символа есть все нормально
  end;
  /// ----------------------
  for i := 0 to basa.Count - 1 do // этот цикл находит каждую строку при совпадении символов
  begin                                       // и выводит строку в listbox2, все работает с одним НО
    c := basa.Strings[i];       // работает на PC, а на Android тормозит, что делать с этим?
    if length(c) = 1 then
      v := c
    else
    begin
      v := copy(c, 1, 2);
      Application.ProcessMessages;
      sleep(10);
      if v = s1 then
      begin
                ListBox2.Items.Add(basa.Strings[i]);;
            Application.ProcessMessages;
      sleep(10);
      end;
    end;
  end;


for i := 0 to basa.Count - 1 do // этот цикл находит каждую строку при совпадении символов
begin // и выводит строку в listbox2, все работает с одним НО
c := basa.Strings[i]; // работает на PC, а на Android тормозит, что делать с этим?
  • Вопрос задан
  • 191 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Lofem
При внесении большого количества изменений в визуальные компоненты, большая часть времени тратится на их перерисовку. На пк это может быть не сильно заметно, а вот в мобильных приложениях уже чувствуется.
Избежать этого довольно просто, нужно перед внесением изменение написать Listbox2.BeginUpdate() а по окончанию ListBox2.EndUpdate(). Это приведет к томе что компонент изменится лишь однажды, после добавления всех полей.
И думаю лучше убрать sleep(10) или в нем есть какой-то сакральный смысл?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы