Sleep problem, builder

Sleep problem, builder
TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

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)

Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:27 minut
  • Postów:1605
5

Samo Sleep(1000u) nie pomoże?

W2
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:47
2

A nie możesz użyć Timer'a i ustawić Interval
Timer1->Interval = 5000;

TU
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad rok
  • Postów:62
0

@Althorion: Tak, działa skąd te u, co znaczy? bo teoretycznie powinno być Sleep(1000)

Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:27 minut
  • Postów:1605
3

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 intull, zatem już wie, o co chodziło, zatem nie musi dopytywać.

Lektura polecana: https://en.cppreference.com/w/cpp/language/integer_literal

ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
3

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ę.


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
edytowany 1x, ostatnio: ZrobieDobrze
_13th_Dragon
Bo przecież tamte nie działają! ;P
MarekR22
Dla mnie każde Sleep to marnowanie zasobu w postaci wątku.
kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Szczecin
3

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.


AL
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 3 lata
  • Postów:1493
3

@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.

edytowany 1x, ostatnio: alagner
Zobacz pozostałe 5 komentarzy
kq
windows.h to na tyle rakowy nagłówek, że w każdym projekcie, gdzie go używam, ma dedykowany własny TU z którego robię forward potrzebnych funkcji.
AL
@kq @_13th_Dragon ++ ;) przy czym to generalnie bywa dobra praktyka dla funkcji branych z C...
_13th_Dragon
Jakoś mi rzadko kolidowali nazwy funkcji ze zwykłego C, więc nigdy nie popełniłem własnego nagłówka.
kq
Może i dobra praktyka, ale to jedyny nagłówek, który u mnie to wymusił. Wszystko posixowe, cstdlib, różne json-c, gzipy itd - nigdy nie kolidowały z moim kodem.

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.