Opóźnienie wykonania.

0

Witam. Mam niby dosyć prosty problem , ale nie mogę go rozwiązać... Proszę o pomoc.

Chcę opóźnić wykonanie czegoś. Np. włączam coś, coś się wykonuje w aplikacji i muszę opóźnić wciśnięcie button'a.
Sleep nie działa prawidłowo, bo całkowicie program blokuje i nic się nie wykonuje. Delay z CRT również tak samo. Mi chodzi o samo opóźnienie...
Po prostu włączam łączenie modemu i musi trochę odczekać, a on leci dalej i blokuje wszystko. Łączenie modemu mam ze starego gotowca TDialUp
Z góry dziękuje za pomoc!

0

While (brak_polaczenia) do
begin
if (sprawdz_poloczenie_ok) then brak_polaczenia:= false;

Application.ProcessMessages; //... poczytaj po co to
end;

1

Sleep nie działa prawidłowo, bo całkowicie program blokuje i nic się nie wykonuje. Delay z CRT również tak samo. Mi chodzi o samo opóźnienie...

TO JEST samo opóźnienie.

application.procesmesage;

Aj dont fink ju ar writin' dis gut łej.

Po prostu włączam łączenie modemu i musi trochę odczekać, a on leci dalej i blokuje wszystko. Łączenie modemu mam ze starego gotowca TDialUp

Jest pare rozwiązań:

  1. www.google.pl
  2. Kompedium wiedzy 4programmers

na obu na PEWNO coś znajdziesz. Wierze w ciebie <3

0

Niestety zamula tak samo jak przy Sleep i Delay (uses Wininet)

 while InternetGetConnectedState(@dwConnectionTypes, 0) do begin //nie połaczony
    if InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE,0) then Button5.Click;  // polaczony
   end;
0
arttrex napisał(a)

Sleep nie działa prawidłowo, bo całkowicie program blokuje i nic się nie wykonuje. Delay z CRT również tak samo. Mi chodzi o samo opóźnienie...

To jest samo opóźnienie; Zarówno Sleep jak i stary Delay robią to samo - wstrzymują działanie aplikacji na określony w parametrze czas i tym samym blokują go aż do wykonania procedury;

Sensownym rozwiązaniem jest użycie wątku + Sleep - wtedy zablokowany zostanie jedynie wątek, a cała aplikacja powinna działać bez większych opóźnień; Ja wiem, wątki (tak jak i wskaźniki czy rekurencja) mogą przysporzyć wiele problemów podczas nauki, ale dają wiele możliwości, dla których warto je stosować w takich czy podobnych sytuacjach;

areksum napisał(a)

application.procesmesage; //... poczytaj po co to

Czasu by mu brakło żeby znaleźć takie coś... To się nawyza Application.ProcessMessages() - o tym można poczytać;

0

Gdy używamy wątków, lepiej użyć jest WaitForSingleObject czy też WaitForMultipleObjects, niż przykładowo pisać takie coś :

while no_connection do
   sleep(1000);
0

Mam komponent TDialUp to łączenia i jak mam użyć tego WaitForSingleObject?

WaitForSingleObject( skąd mam to pobrać ? , 6000);
0

Widziałem to, ale przydałby mi się przykład PASCAL'a, bo nie ogarniam...

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