sleep(); - inna funkcja o podobnym dzialaniu, isnieje?

0

w swoim programie potrzebuje wykonywac pewna petle dopoki nie zostanie spelniony warunek [b]co 5 minut[/b]

po kazdym sprawdzeniu petli pobierana jest informacja o warunku, jesli warunek jest spelniony petla przechodzi dalej, jesli nie - powtarza sie co 5 minut az warunek nie zostanie spelniony

do tego uzywam funkcji Sleep();, ale ma ona dziwne dzialanie, bo program jakby sie 'zawiesil' - nie reaguje na nic, a po czasie wpisanym w Sleep(); dziala normalnie - denerwuje mnie to

da sie jakos temu zapobiec, ew. zrobic tak zeby program odpowiadal?

0

Nie ma prefiksu, więc jeżeli piszesz pod delphi, bcb to można użyć timer'a

0

Application.ProcessMessages;

procedure Delay(msecs:integer);
var
  FirstTickCount:longint;
begin
  FirstTickCount:=GetTickCount;
  repeat
    Application.ProcessMessages;
  until ((GetTickCount-FirstTickCount) >= Longint(msecs));
end;
0

w delphi:

while not(warunek)
begin
application.processmessages;
sleep(1);
end;
[diabel]

0

Albo osobny wątek :-)

0
  1. Zdecydowanie osobny wątek jeśli nie chcesz by twój program "zamarzał".
  2. TTimer - jeśli tylko chcesz odmierzać te 5 minut będzie idealny - prostszy w obsłudze
    Program w sleep zasypia - co prawda zwalnia procesor dla innych programow, ale sam się mrozi.
    podpowiedz, są problemy z dokłądnym odmierzaneim czasu - więc jeśli chcesz powalczyć o bardzo dużą dokładność nie tędy droga
    Andrzej Dąbrowski
0

jw. petla moze byc z sleep() ale zrob osobny watek

0

ok, poczytalem troche o watkach - da rade zrobic zeby one zwracaly wartosc? ;d

0

Jak najbardziej :)
W sekcji public wątku dajesz dowolną zmienną do której przypisujesz wartość. Potem możesz ją odczytać poprzez Watek.Zmienna (ehh radze też poczytać o klasach).

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