BCB i Sleep()

0

Wie ktoś może dlaczego jak użyje funkcji Speep() w BCB to nie program wiesza ?? Jest mi to bardzo potrzebne :/

0

A niby co miałoby się zawieszać jak nie program?

// lezę :) [mf]

0

Może powinno być sie, zamiast nie :P
Nie wiem dlaczego, ale przy SleepEx (z windows.h) się nie wiesza (o ile pamiętam :] )

0
0x666 napisał(a)

A niby co miałoby się zawieszać jak nie program?

oprócz programu ktory pisze moze sie jeszcze zawiscic BCB jesli przez niego uruchamiam program

0

To mało prawdopodobne. BCB i Twój program to dwa niezależne procesy, więc Sleep w jednym nie ma wpływu na drugi.

0

ojjjj myslisz sie.... juz nie raz udalo mi sie zawieszic BCB i program jednoczesnie :D Ja jestem wyjatkowo zdolny :D

najnowsze wiesci z mojego BCB... SleepEx() zachowuje sie tak samo jak Sleep() czyli dla czasu do 1 sekundy dziala poprawie a dla wiekszych sie wiesza :/

0

Jeśli dobrze zrozumiałem temat, to program ma się NIE wieszać gdy odczekuje wykonania funkcji Sleep(). W C++Builderze, przed użyciem funkcji Sleep() należy wpisać linijkę:
Application->ProcessMessages;
i powinno pomóc... :-) chyba, jeśli się nie mylę.</b>

0

Jesli ja dobrze zrozumialem to powinno to wygladac tak :

Application->ProcessMessages;
Sleep(5000);

a w efekcje otrzymuje blad :

[C++ Error] Unit1.cpp(160): E2235 Member function must be called or its address taken

0

Programujesz w C++, czy tylko budujesz programy :D
musi być () na końcu odwołania do metody, no nie :P ??

0
GrzesiuS napisał(a)

Jesli ja dobrze zrozumialem to powinno to wygladac tak :
Application->ProcessMessages;
Sleep(5000);

Źle zrozumiałeś. Może to wyglądać tak:

for(int i=0;i<10;++i)
{
   Sleep(500);
   Application->ProcessMessages();
}

tylko, że program de facto nie będzie na nic czekać ;-P Może lepiej użyj timer'a.

0

z Timerem moj program troche sie komplikuje... w BCB dopiero sie ucze cokolwiek tworzyc. Stworzylem sobie taki programik w Devcpp i chodzil pod konsola a teraz chce zeby dzialal i mial ladny wyglad. ale cos nie chce dzialac

mam taki kod :

switch (tryb)
{
case 1:
for(i=0;i<5;i++)
{
GetEnvironmentVariable ("systemdrive", tabp, 3);
strcat (tabp, "\cos.html");
wchar_t url [40];
StringToWideChar (tabp, url, 40);
Form1 -> CppWebBrowser1 -> Navigate (url);
Sleep(5000);
Application->ProcessMessages();
}
break;

  case 2:
     break;

  case 3:
     break;
0

A czy przypadkiem to nie jest Ci potrzebne ---> TCppWebBrowser::OnNavigateComplete2 ???

0
0x666 napisał(a)

A czy przypadkiem to nie jest Ci potrzebne ---> TCppWebBrowser::OnNavigateComplete2 ???

nidgy takiego nie stosowalem i zawsze WebBrowser dzialal... nie dziala tylko w petli ze sleep() :/

0

i tak nie dziala... a na Timer'ze to sie skomplikuje

0

Pewnie chodzi ci o to, aby program zaczekał aż sie załaduje strona i później coś robił.
Nie możesz użyć sleep, bo sleep zatrzyma wszystko łącznie z ładowaniem strony do CppWebBrowser. Musisz obsłużyć zdarzenie CppWebBrowser::OnNavigateComplete2.
Np jeśli chcesz na czas ładowania się stroy zablokować input formy (tzn zeby nie można było klikać i wciskać klawiszy) to po instrukcji
'Form1 -> CppWebBrowser1 -> Navigate (url);'
dodaj 'Form1->Enabled = false;' żeby zablokować input
Natomiast w zdarzeniu CppWebBrowser1::OnNavigateComplete2 dodaj
'Form1->Enabled = true;' aby odblokować input zaraz po załadowaniu srtony.

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