Opóźnienie wykonywania pętli for to

0

Witam,
Mam taki problem - Jak zapisać wykonanie pętli, aby każdy wiersz był wczytywanych z memo2 do memo1 co np. 500 ms

For i=0 to memo2.lines.count-1 do
Memo1.lines.add(memo2.lines[i])

niestety dodanie sleep(500) nic nie daje

1

Sleep nic nie daje, bo blokuje kolejkę komunikatów, więc zmiany zobaczysz dopiero wtedy gdy wszystkie dane zostaną dodane do drugiego memo. Aby temu zapobiec, można wywołać Application.ProcessMessages – wtedy powinno działać:

for i := 0 to Memo2.Lines.Count - 1 do
begin
  Memo1.Lines.Add(Memo2.Lines[i])

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

Ładniejsza byłaby pętla for in:

var
  Line: String;
begin
  for Line in Memo2.Lines do
  begin
    Memo1.Lines.Add(Line);

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

Ciekawie będzie, jeśli zamkniesz program w trakcie działania tej pętli.

1

a jeszcze lepiej będzie dodać timera z interval ustawionym na 500 i z dodatkowym numerem ostatnio dodanej linii

0

OK, dzięki dziala

1 użytkowników online, w tym zalogowanych: 0, gości: 1