Opóźnienie wykonania.

Opóźnienie wykonania.
AR
  • Rejestracja: dni
  • Ostatnio: dni
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!

AR
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

  • Rejestracja: dni
  • Ostatnio: dni
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

AR
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
 while InternetGetConnectedState(@dwConnectionTypes, 0) do begin //nie połaczony
    if InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE,0) then Button5.Click;  // polaczony
   end;
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
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ć;

GM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

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

Kopiuj
while no_connection do
   sleep(1000);
AR
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
WaitForSingleObject( skąd mam to pobrać ? , 6000);
olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
AR
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.