@Romanson

Блин не могу разобраться, почему тормозит программа при цикле...?

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;
  Application.ProcessMessages;
  Sleep(100);
  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);
    /// ----------------------
    for i := 0 to basa.Count - 1 do
    begin

      c := basa.Strings[i];
      if length(c) = 1 then
        v := c

      else
      begin

        v := copy(c, 1, 2);

        if v = s1 then
          ListBox2.Items.Add(basa.Strings[i]);

      end;
         Application.ProcessMessages;
  Sleep(100);
    end;


Application.ProcessMessages;
  Sleep(100);
- это нужно для отображения aniindicator'а в приложении и с добавлением pplication.ProcessMessages; тормозит еще хуже чем без него, потому как и без него обработка базы даже в 60 строк уже занимает время. на PC все летает, на телефоне тормозит.

Может как то все это можно иным способом реализовать? подскажите
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 1
Попробуйте ListBox2.Items.BeginUpdate() перед циклом и ListBox2.Items.EndUpdate() после его окончания.

И уберите sleep(100) - в Вашем случае они не нужны.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы