Witam potrzebuję wstawić Sleep(1000);
ale dostaję błąd, ponieważ używam komponentu, który się z tym gryzie
jest ambiguity between Sleep(unsigned int) and Sleep(unsigned long)
co z tym zrobić? mam zrobić jakąś pętlę, która będzie się wykonywała, żeby było opóźnienie? raczej słabe
jak mogę stworzyć własny sleep? (dotyczy c++ builder)
Sleep problem, builder
- Rejestracja: dni
- Ostatnio: dni
- Postów: 66
- Rejestracja: dni
- Ostatnio: dni
- Postów: 47
A nie możesz użyć Timer'a i ustawić Interval
Timer1->Interval = 5000;
- Rejestracja: dni
- Ostatnio: dni
- Postów: 66
@Althorion: Tak, działa skąd te u, co znaczy? bo teoretycznie powinno być Sleep(1000)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1620
No nie powinno być Sleep(1000), kompilator Ci nawet powiedział dlaczego — nie jest w stanie się domyślić, czy Ci chodziło o rzucenie tego 1000 na unsigned inta, czy unsigned longa.
A w trochę większych szczegółach — C++ ma całkiem sporo różnych typów całkowitoliczbowych, i mocno chaotyczny standard odnośnie tego, jakiego typu powinny być literały liczbowe (czyli liczby zapisane „jawnie” w kodzie, jak ten tysiąc). Jestem szczególnym „fanem” tego, że to zależy od bazy, w której są zapisane.
I tak, w szczególności, zapisanie „gołej” liczby oznacza, że może być ona traktowana jako int, ale może być też traktowana jako long int, a nawet long long int. Ty masz dwa różne, przeciążone Sleepy — jeden przyjmujący unsigned inta, drugi przyjmujący unsigned long inta. Kompilator by naturalnie rzutował do unsigned inta, jakby miał inta, a do unsigned longa, jakby miał longa… ale nie wie, co ma, bo mu standard nie mówi, co ma mieć, więc się wywala i pyta programistę, o co mu chodziło. Zapisanie tego z przyrostkiem u mu już to mówi — bo unsigned long int ma przyrostek ul, a unsigned long long int — ull, zatem już wie, o co chodziło, zatem nie musi dopytywać.
Lektura polecana: https://en.cppreference.com/w/cpp/language/integer_literal
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2310
Też tak macie, że jak słyszycie C++ builder + Sleep, to potwory wam się budzą w duszy ?
Czuję, że zaraz zamorduję jakiegoś kotka .
@tuz: Pokaż kod, zobaczymy co masz na wizji
tuz napisał(a):
Witam potrzebuję wstawić Sleep(1000);
ale dostaję błąd,
jak mogę stworzyć własny sleep? (dotyczy c++ builder)
Taaaa, nie rozumienie komunikatu o błędzie to bardzo dobry fundament, aby pisać swoją funkcję.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
teoretycznie powinno być Sleep(1000)
Nie powinno. Obie funkcje, które zacytowałeś przyjmują wartości bez znaku (unsigned int, unsigned long), a Ty podałeś liczbę całkowitą ze znakiem. Konwersja do obu była równie łatwa, więc kompilator nie potrafił się zdecydować. Pisząc 1000u mówisz unsigned int, co daje exact match z jedną z sygnatur funkcji.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1493
@tuz: raczej oba Sleepy powinny być w różnych przestrzeniach nazw i miałbyś lib1::Sleep(1000); i lib2::Sleep(1000);
Przy czym na tym poziomie zaawansowania pytanie o Sleepa sprawia że stawiam, że pewnie masz inne problemy w tym kodzie i robisz coś bardzo źle.