Ĺadny brzuch
Witam. Mam takie pytanie.
Otóż chciałbym, aby program wykonał komendę X, a potem Y. Jednak aby Y zadziałała, najpierw musi być wykonane X, a X wykonuje się różnie, od kilku do kilkudziesięciu sekund. I chciałbym wiedzieć, jak zrobić, żeby komenda Y poczekała na wykonanie X, i dopiero wtedy się uruchomiła.
PZDR
PS: Sorry że trochę zawile piszę ;)
rzeczywiście piszesz trochę zawile ;)
nie rozumiem w czym problem? Ta Twoja komenda X to jakaś funkcja? Standardowa? Napisana przez Ciebie?
Trochę więcej szczegółów co to są za komendy ;)
Dobra.
gg1.Connect();
gg1.Status:=2;
W takim przypadku, HGG nie zdąży się jeszcze połączyć, i już zmienia status - a właściwie to go nie zmienia, bo jeszcze nie jest połączone. A chcę, aby poczekało, aż się połączy, i dopiero wtedy zmieniło status.
PZDR
Użytkownik numerant_kubson edytował ten post 21 styczeń 2006, 13:00
try gg1.Connect(); finally gg1.status:=2; end;
tak powinno być ok ;P jeszcze możesz dodać obsługę wyjątków w module exception ;)
Użytkownik j-mail edytował ten post 21 styczeń 2006, 13:13
Heh, co za pytanie. Jesli 2 procedury sa w jednym ciagu to druga sie wykona dopiero po wykonaniu pierwszej, nie wazne ile ta sie wykonuje. Gdyby tak nie bylo programowanie nie mialoby sensu, bo procedury nie wykonywalyby sie pokolei, jak programista kazal.
Jesli chodzi o try....finally to nie sluzy to temu aby proca w finally czekala az ciag wpisany w try sie wykona. Sluzy do tego, ze w bez wzgledu na to czy zadania przy try sie zakoncza pomyslnie lub bledem, zawsze finally sie wykona.
ps. mam nadzieje ze jarzysz o co biega :)
//edit
co do konkretnego przypadku z tym hgg, to mozesz sprobowac wsadzic hgg.status:= 2; w petle ktora sprawdza czy hgg sie polaczylo (hgg1.Connected)
Użytkownik Kajetanek edytował ten post 21 styczeń 2006, 13:20
Zrobię inaczej, przecież HGG ma właściwość OnConnected...
Ale ze mnie debil...
:)
PZDR
kajetanek -> zgadza się to co napisałes o try ;) try sprawdzi czy połączenie wykonało się pomyślnie ;) jeżeli tak to przejdzie dalej jeżeli nei też przejdzie, ale zawsze poczeka aż połączenie zwróci status ok albo błąd ;) ;) pomysł z pętlą connected też jest dobry ;)
zauważ że jednak łączenie się z serwerem przebiega poza głównym programem. na to jest odpalany osobny wątek ;) więc Twoja uwaga o sensowności programowania jeżeli coś po kolei się nie wykonuje nie ma sensu. :lol:
numerant -> no widzisz. czasami wystarczy pomyśleć :P
a co do drugiej części wypowiedzi. no cóż. Ty rzekłeś :lol:
Użytkownik j-mail edytował ten post 21 styczeń 2006, 13:25
[...]
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Otóż chciałbym, aby program wykonał komendę X, a potem Y. Jednak aby Y zadziałała, najpierw musi być wykonane X, a X wykonuje się różnie, od kilku do kilkudziesięciu sekund. I chciałbym wiedzieć, jak zrobić, żeby komenda Y poczekała na wykonanie X, i dopiero wtedy się uruchomiła.
PZDR
PS: Sorry że trochę zawile piszę ;)
rzeczywiście piszesz trochę zawile ;)
nie rozumiem w czym problem? Ta Twoja komenda X to jakaś funkcja? Standardowa? Napisana przez Ciebie?
Trochę więcej szczegółów co to są za komendy ;)
Dobra.
gg1.Connect();
gg1.Status:=2;
W takim przypadku, HGG nie zdąży się jeszcze połączyć, i już zmienia status - a właściwie to go nie zmienia, bo jeszcze nie jest połączone. A chcę, aby poczekało, aż się połączy, i dopiero wtedy zmieniło status.
PZDR
Użytkownik numerant_kubson edytował ten post 21 styczeń 2006, 13:00
try gg1.Connect(); finally gg1.status:=2; end;
tak powinno być ok ;P jeszcze możesz dodać obsługę wyjątków w module exception ;)
Użytkownik j-mail edytował ten post 21 styczeń 2006, 13:13
Heh, co za pytanie. Jesli 2 procedury sa w jednym ciagu to druga sie wykona dopiero po wykonaniu pierwszej, nie wazne ile ta sie wykonuje. Gdyby tak nie bylo programowanie nie mialoby sensu, bo procedury nie wykonywalyby sie pokolei, jak programista kazal.
Jesli chodzi o try....finally to nie sluzy to temu aby proca w finally czekala az ciag wpisany w try sie wykona. Sluzy do tego, ze w bez wzgledu na to czy zadania przy try sie zakoncza pomyslnie lub bledem, zawsze finally sie wykona.
ps. mam nadzieje ze jarzysz o co biega :)
//edit
co do konkretnego przypadku z tym hgg, to mozesz sprobowac wsadzic hgg.status:= 2; w petle ktora sprawdza czy hgg sie polaczylo (hgg1.Connected)
Użytkownik Kajetanek edytował ten post 21 styczeń 2006, 13:20
Zrobię inaczej, przecież HGG ma właściwość OnConnected...
Ale ze mnie debil...
:)
PZDR
kajetanek -> zgadza się to co napisałes o try ;) try sprawdzi czy połączenie wykonało się pomyślnie ;) jeżeli tak to przejdzie dalej jeżeli nei też przejdzie, ale zawsze poczeka aż połączenie zwróci status ok albo błąd ;) ;) pomysł z pętlą connected też jest dobry ;)
zauważ że jednak łączenie się z serwerem przebiega poza głównym programem. na to jest odpalany osobny wątek ;) więc Twoja uwaga o sensowności programowania jeżeli coś po kolei się nie wykonuje nie ma sensu. :lol:
numerant -> no widzisz. czasami wystarczy pomyśleć :P
a co do drugiej części wypowiedzi. no cóż. Ty rzekłeś :lol:
Użytkownik j-mail edytował ten post 21 styczeń 2006, 13:25
[...]
