Embarcadero - Label i petla

0

Mam następujący problem.

umieściłem komponent Label i robię zwykłą pętle
Problem jest taki że chcę podglądać postęp obliczeń i obserwować jak zmienia się i.
Niestety ale podczas działanie programu się nic nie zmienia a na końcu pokazuje się mi wynik 9999. Włączenie DoubleBuffered dla TForm też nie pomaga
{
for (int i = 0; i < 100000; i++)
{
Label1->Caption=i;
Funkcja (i);
}

Robię to w XE8. Co robię źle?

1

Blokujesz pętlę główną programu. Do tego typu zastosowań prawdopodobnie powinieneś użyć timera lub odpalić jakieś process_events() wewnątrz pętli. Wg google to by było Application->ProcessMessages();

Takie rozwiązanie będzie działać, ale jest głupie i świadczy o złym designie. Po stronie UI powinny być tylko krótkie funkcje obsługujące wyświetlanie eventów, niezawierające jakiejś skomplikowanej logiki, szczególnie blokującej.

0

Wprowadzenie do kodu np. Sleep(1000) nic nie daje. czekam po prostu dłużej.

0

timer to nie jest sleep.

Poza tym, co z Application->ProcessMessages()?

0

Application->ProcessMessages()
Działa. Co prawda nie da się w trakcie aplikacji zamknąć okna (x), ale mam to co szukałem
Dzięki

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