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
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
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.
a jeszcze lepiej będzie dodać timera z interval
ustawionym na 500 i z dodatkowym numerem ostatnio dodanej linii
OK, dzięki dziala