Forsinkelser i c++

Tags:    c++ delphi

Er det muligt at insætte en forsinkelse i et c++ program...?
Det jeg ønsker at lave er et program som kan lave nogle statistiske beregninger på baggrund af nogle tilfældige tal som programmet selv laver... Men samtidigt ønsker jeg også at der skal gå 2 sek. i mellem at programmet laver de tilfældige tal.... Er det muligt, og er der eventuelt nogen der kan hjælpe mig med "koden/komandoen" ???

På forhånd tak....



7 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Er det muligt at insætte en forsinkelse i et c++ program...?
Det jeg ønsker at lave er et program som kan lave nogle statistiske beregninger på baggrund af nogle tilfældige tal som programmet selv laver... Men samtidigt ønsker jeg også at der skal gå 2 sek. i mellem at programmet laver de tilfældige tal.... Er det muligt, og er der eventuelt nogen der kan hjælpe mig med "koden/komandoen" ???

På forhånd tak....

For mig ser det ud som om i sidder og bøvler i VB.
I C++ ser det API-kaldet vel ud som følger:
//tidtagning
int uiStart, uiDelay
uiStart=clock();
do{
//kode
} while(((clock()-uiStart)<uiDelay));



Hej

Hva' for noget, der er da intet 'clock' API. Men som jeg skrev tidligere GetTickCount.

Hilsen
Thomas Vanting



User
Bruger #75 @ 14.04.02 18:52
Nu er det temmelig lang tid siden, at jeg har programmeret i c++, men jeg mener at

Sleep(ANTALMILLISEKUNDER);

skulle kunne gøre det.

Med venlig hilsen

Mikkel Bøg Clemmensen
mt.clemmensen@vip.cybercity.dk




User
Bruger #24 @ 15.04.02 08:07
Sleep KAN gøre det, men er noget rigtig ... [fill in the blank] ..
Man kan nemlig ikke gøre noget mens sleep kommandoen kører.... der imod kunne du teste (simpel metode) tiden i sekunder.... have en tæller det bliver talt op 1,2,10,100,1000 gange i sekundet (timer)... nå værdien bliver = 2 sek, hopper du til en under rutine... på den måde kan du udfører ting i dit program imellem beregningerne... ellers skulle du lave det med interrupt....

ikke noget med sleep, imho ;)



Er det muligt at insætte en forsinkelse i et c++ program...?
Det jeg ønsker at lave er et program som kan lave nogle statistiske beregninger på baggrund af nogle tilfældige tal som programmet selv laver... Men samtidigt ønsker jeg også at der skal gå 2 sek. i mellem at programmet laver de tilfældige tal.... Er det muligt, og er der eventuelt nogen der kan hjælpe mig med "koden/komandoen" ???

På forhånd tak....


Hej

Du kan jo bruge API funktionen GetTickCount, som returnere en tick counts med et interval på ca. 10mS

Eksempel::

unsigned int uiStartTime, uiDelayTime=2000; //2sek

do
{
//Afvikel kode.........
}
while((GetTickCount()-uiStartTime)<uiDelayTime));

Med venlig hilsen
Thomas Vanting



Er det muligt at insætte en forsinkelse i et c++ program...?
Det jeg ønsker at lave er et program som kan lave nogle statistiske beregninger på baggrund af nogle tilfældige tal som programmet selv laver... Men samtidigt ønsker jeg også at der skal gå 2 sek. i mellem at programmet laver de tilfældige tal.... Er det muligt, og er der eventuelt nogen der kan hjælpe mig med "koden/komandoen" ???

På forhånd tak....

Hej

Du kan jo bruge API funktionen GetTickCount, som returnere en tick counts med et interval på ca. 10mS

Eksempel::

unsigned int uiStartTime, uiDelayTime=2000; //2sek

do
{
//Afvikel kode.........
}
while((GetTickCount()-uiStartTime)<uiDelayTime));

Med venlig hilsen
Thomas Vanting


HOV HOV, der var jeg vist lige lidt uopmærksom, man skal jo naturligvis lige har en starttick


unsigned int uiStartTime, uiDelayTime=2000; //2sek

uiStartTime=GetTickCount();
do
{
//Afvikel kode.........
}
while((GetTickCount()-uiStartTime)<uiDelayTime));

Med venlig hilsen
Thomas Vanting




Er det muligt at insætte en forsinkelse i et c++ program...?
Det jeg ønsker at lave er et program som kan lave nogle statistiske beregninger på baggrund af nogle tilfældige tal som programmet selv laver... Men samtidigt ønsker jeg også at der skal gå 2 sek. i mellem at programmet laver de tilfældige tal.... Er det muligt, og er der eventuelt nogen der kan hjælpe mig med "koden/komandoen" ???

På forhånd tak....


For mig ser det ud som om i sidder og bøvler i VB.
I C++ ser det API-kaldet vel ud som følger:
//tidtagning
int uiStart, uiDelay
uiStart=clock();
do{
//kode
} while(((clock()-uiStart)<uiDelay));



Er det muligt at insætte en forsinkelse i et c++ program...?
Det jeg ønsker at lave er et program som kan lave nogle statistiske beregninger på baggrund af nogle tilfældige tal som programmet selv laver... Men samtidigt ønsker jeg også at der skal gå 2 sek. i mellem at programmet laver de tilfældige tal.... Er det muligt, og er der eventuelt nogen der kan hjælpe mig med "koden/komandoen" ???

Hvis det er i Windows C++ (MFC) så er det nemmeste at bruge API - kaldet SetTimer() (søg på hælp om kaldet). Herefter bruges kompileren til at reagere på WM_TIMER.

Det kan ikke være nemmere.

Hvis det er i MSDos
Så bør du måske bruge delay(2000) (#include<dos.h>;), men bruger selfølgelig ikke CPU -tiden fornuftigt. Istedet kan oprettes en interrupt rutine
f.eks.

"
#include <dos.h>
#include <conio.h>

void interrupt (*oldhandler)(void);
int count=0;

void interrupt handler(void)
{
count++;
oldhandler();
}

void main(void)
{
float time;
oldhandler = getvect(0x1c);
setvect(0x1c,handler);
while(count<100) print("count er %d \\n",count);
setvect(0x1c,oldhandler);
time=count*19.8e-3;
printf("Dette tog %f sekunder.",time);
}
"

Det syntes jeg er den nemmeste måde at gøre dette på...





t