Borland C++ Builder 6.0 i nieistniejąca funkcja delay(int

0

Po pierwsze znalazłem wątek:
http://4programmers.net/Forum/viewtopic.html?id=43100

niestety podane tam rozwiązanie nadaje się do wykorzystania tylko z okienkami, co nie załatwia sprawy.

Borland w pomocy podaje taki przykład:

#include <time.h>
#include <stdio.h>
#include <dos.h>

int main(void)
{
clock_t start, end;
start = clock();

delay(2000);

end = clock();
printf("The time was: %f\n", (end - start) / CLK_TCK);

return 0;
}

Wynik kompilacji:
[C++ Error] clock.cpp(10): E2268 Call to undefined function 'delay'

Mam pytanie- czy to się nie kompiluje tylko u mnie? Może pod M$ VC++ się kompiluje? Sprawdziłem w dos.h - nie ma tam funkcji delay, mimo, że być powinna (?).
Jeśli ktoś wie o co tu chodzi - HELP!!!

Funkcja sleep(unsigned int __seconds) w dos.h nie załatwia sprawy, bo potrzebuję ok. 0.25 sekundy.

Jak powinien wyglądać substytut tej funkcji?

Dzięki z góry

L@mer

0

W module dos.h jest taka funkcja:

void delay(unsigned milliseconds);

1,7 sekundy szukania...

[<font color="blue">dopisane</span>]
Byłem przekonany, że pytasz o C++ pod DOSa.

0

Używasz C++ Buildera 6?

Bo ja tak, to mój dos.h: (nie robię problemu, jak go nie ma, przepraszam za zajęcie miejsca, ale jakoś attachmentu nie można dodać :-()

[tu był CAŁY plik DOS.h !!]
//jeszcze jeden taki wyskok a będzie źle

0

Spróbuj zastąpić funkcję delay() funkcją Sleep() z WinAPI.
To nie to samo, ale ci powinno sie skompilować.

0

Byłem przekonany, że pytasz o C++ pod DOSa.

Piszę (uczę się pisać) pod command-line'a- ale używam IDE Borlanda.

OK, poradziłem sobie sam, pytanie - można tu coś poprawić ? Co o tym sądzicie? [???]
No i dalej nie wiem, czemu Borland wyłączył te funkcje z bibliotek????!!!! :-[ :-[

//_________________________________________
//moj produkt - nawet działa
#include <windows>

void delay(unsigned long czekajMilisek)
{
unsigned long start = GetTickCount();
unsigned long teraz = GetTickCount();
while(teraz- start< czekajMilisek)
{
teraz=GetTickCount();
}
}
//____________________________________________

0

Problem z GetTickCount lezy w tym ze na systemach :

  • 9x jest wywolywany max 18 razy na sekunde - czyli co 55milisekund
  • na NT co 10milisekund czyli 100 razy na sekunde
    tych sktrajnych wartosci nie da sie zmienic !!
    Jesli potrzebna Ci jest duzo wieksza dokladnosc to uzyj QueryPerformanceCounter i QueryPerformaceFrequency.
    Swoja droga dla 0.25 sekundy wystarczy Sleep(250); i masz stop na 1/4 sekundy !!
0

Dzięki Snaj, mój najnowszy delay liczy z dokładnością do milisekundy :-)

L@mer

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