zdravím, potřeboval bych poradit. mám funkci, ve funkci je cyklus, který postupně provádí jistý převod a já bych tam někam do toho cyklu potřeboval vložit nějak pauzu, provést výpis mezivýsledku a čekat na kliknutí na tlačítko pro pokračování na další krok, tam se v onom cyklu provede znova další krok výpočtu a opět pauza, výpis, čekání.. v Delphi jsme se ve škole moc neučili, tak bych byl moc vděčný za pomoc, čim nebo jak to provést.. Děkuju:)
Fórum › Delphi
Pauza
napadá mě to řešit-
pseudokód:
repeat
výpočet
proměnná dosáhla hodnoty then
begin
vypis; // napr. do labelu
pauza:=1;
repeat
application.processmessages; // bez tohoto to nepujde
sleep(100);
until pauza=0;
end;
until konec vypoctu
Obsluha eventu TLACITKA
if zmacknuto then pauza:=0;
---------------------
nebo varianta 2
pseudokód:
mame aktivovany Timer:
Procedure Timer
inc(hodnatatimeru);
Procedure Vypocet;
repeat
výpočet
If hodnotatimeru>100 then
begin
vypis; // napr. do labelu
pauza:=1;
repeat
application.processmessages; // bez tohoto to nepujde
sleep(100);
until pauza=0;
hodnotatimeru:=0;
end;
until konec vypoctu
Obsluha eventu TLACITKA
if zmacknuto then pauza:=0;
nebo podle potřeby mírně osolit a doupravit..
processmessages co vim se dívá do fronty událostí okna, protože máš jenom jeden thread zaseklej v cyklu, tak by nedošlo ke zpracování kódu v obsluze tlačítka a kdekoliv jinde. Sleep je ta opakovaná pauza a uspání aplikace na danej počet milisekund. Dalo se to taky víc vláknama, ale je to zbytečný, všechno i ukončení aplikace se zvládne pomocí komunikace přes proměnný v 1 threadu.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno