(решено)Дано: 55555 <== итераций SynEdit.add - в чём секрет?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

(решено)Дано: 55555 <== итераций SynEdit.add - в чём секрет?

Сообщение vitaly_l » 20.07.2015 18:57:07

Всем привет и хорошего дня.
Дан вот такой простой код:
Код: Выделить всё
var
  i:integer;
begin
  for i := 0 to 55555 do
    begin
      SynEdit.Lines.Add('// '+IntToStr(i));
    end;
end;     

заполняет очень-очень-очень долго.

Попробовал вот так:
Код: Выделить всё
var
  i:integer;
begin
  SynEdit.Visible:=false;
  SynEdit.Enabled:=false;
  Application.ProcessMessages;
  for i := 0 to 55555 do
    begin
      SynEdit.Lines.Add('// '+IntToStr(i));
    end;
  SynEdit.Visible:=true;
  SynEdit.Enabled:=true;
end;     

заполняет много быстрее, но всё равно долго.

Сделал вот так:
Код: Выделить всё
var
  i:integer;
  s:string;
begin
  SynEdit.Visible:=false;
  SynEdit.Enabled:=false;
  Application.ProcessMessages;
  for i := 0 to 55555 do
    begin
      s:=s+'// '+IntToStr(i)+#13;
    end;
  SynEdit.text := s;
  SynEdit.Visible:=true;
  SynEdit.Enabled:=true;
end; 

:arrow: Заполняет моментально.... :oops:

Вопрос: В чём секрет? Это баг или нужно чего-то отключить при SynEdit.add ?


.
Последний раз редактировалось vitaly_l 20.07.2015 19:27:14, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Дано: 55555 <== итераций SynEdit.add - в чём секрет?

Сообщение resident » 20.07.2015 19:21:19

Код: Выделить всё
    SynEdit1.BeginUpdate;
    for i := 0 to 55555 do
      begin
        SynEdit1.Lines.Add('// '+IntToStr(i));
      end;
    SynEdit1.EndUpdate;
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Дано: 55555 <== итераций SynEdit.add - в чём секрет?

Сообщение vitaly_l » 20.07.2015 19:26:51

resident писал(а):BeginUpdate

БОЛЬШУЩЕЕ (В СМЫСЛЕ ГРОМАДНОЕ) СПАСИБО!
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru