|
You last visited: Today at 20:39
Advertisement
c++ wie clock_t variable in der funktion updaten?
Discussion on c++ wie clock_t variable in der funktion updaten? within the C/C++ forum part of the Coders Den category.
03/28/2015, 16:46
|
#1
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
c++ wie clock_t variable in der funktion updaten?
ich weiß nicht wieso dieso code nicht funktioniert :S
wäre super wenn jemand drüber schaut und mir sagen kann wo das problem ist
start = clock();
while(1>0)
{
start=clock(); // wieso wird hier nicht mehr die aktuelle zeit auf start gelegt?
}
liegt das an der clock_t variable? 
oder welche möglichkeiten habe ich start zu upzudaten?
eine neue variable nehmen ist für mein programm nicht möglich
Danke schonmal
|
|
|
03/28/2015, 23:31
|
#2
|
elite*gold: 281
Join Date: Oct 2007
Posts: 6,248
Received Thanks: 887
|
in erster linie wäre interessant was dein code eigentlich machen soll - lässt sich bei deinem beispiel nur sehr schwer erahnen.
hab mal kurz nach der clock function gegooglet und sieht so aus als würde dir die mehr oder weniger die "cpu-zeit", die dein programm bis jz in anspruch genommen hat als rückgabewert liefern.
wenn du die aktuelle uhrzeit ausgeben willst, dann is die clock function somit net wirklich geeignet. such mal nach der time function, mit der wärst du um einiges besser dran
|
|
|
03/29/2015, 00:06
|
#3
|
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
|

Mögliche Lösung?
|
|
|
03/29/2015, 00:52
|
#4
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
Quote:
Originally Posted by Mahatma
in erster linie wäre interessant was dein code eigentlich machen soll - lässt sich bei deinem beispiel nur sehr schwer erahnen.
hab mal kurz nach der clock function gegooglet und sieht so aus als würde dir die mehr oder weniger die "cpu-zeit", die dein programm bis jz in anspruch genommen hat als rückgabewert liefern.
wenn du die aktuelle uhrzeit ausgeben willst, dann is die clock function somit net wirklich geeignet. such mal nach der time function, mit der wärst du um einiges besser dran 
|
habe hier eine unterfunktion geschrieben
bool TimeForSkill(int s, clock_t st){
int check;
check = (clock() - st) / CLOCKS_PER_SEC;
if (s <= check)
return true;
else return false;
}
in hauptfunktion ist dann sowas hauptfunktion ist dann sowas
if(TimeForSkill( 125 , start) ==1)
{
...
Sleep(1000)
....
Sleep(5000)
}
// hier dann timer wieder zurück stellen, damit wieder von 0 hochgezählt //wird. hierfür halt wieder
start = clock();
habe eine while(1>0) schleife, die mehrere verschiedene funktionen hat,
welche alle paar minuten (variable s für sekunden ) aufgerufen werden, naja und dann solls wieder auf 0 gesetzt werden, dafür wäre die neue zuweisung von start = clock(), naja und da es mehrere funktionen sind, wird jede seine eigene clock_t variable benötigen, da sonst durch die Sleeps in den funktionen, andere funktionen verschlafen werden ^^
Quote:
Originally Posted by Logtetsch

Mögliche Lösung?
|
danke für die antwort, aber das ist nicht wirklich mein problem^^
|
|
|
03/29/2015, 01:37
|
#5
|
elite*gold: 281
Join Date: Oct 2007
Posts: 6,248
Received Thanks: 887
|
wie oben schon erwähnt is clock() in diesem fall nicht die richtige funktion für den zweck, weil sie nicht die uhrzeit, sondern die verbrauchte cpu-zeit zurückliefert.
um die richtige funktion für dich zu finden solltest du dich zu allererst einmal fragen welche auflösung/genauigkeit du brauchst. reicht es in sekunden aufzulösen oder gibt es eventuell auch skills die weniger als 1 sec cooldown haben und die du deshalb beispielsweise alle 0,5 sec "ausführen" willst....?
für eine sekunden-auflösung würde sich die time() function anbieten, solltest du eine höhere genauigkeit (millisekunden) brauchen, so kannst du unter windows z.b. GetTickCount() oder unter unix gettimeofday() nehmen.
hab dir kurz mal etwas beispielcode geproggt um das ganze bissl zu veranschaulichen (kann aber net garantieren dass er lauffähig ist, weil ich den nur eben im editor geschrieben hab):
PHP Code:
#define DELAY_ATTACK 500 /*time in milliseconds --> 0,5 seconds /*
#define DELAY_HEAL 10000 /*time in milliseconds --> 10 seconds /*
bool timePassed(unsigned int lastTime, unsigned int delay){
return ((lastTime + delay) < GetTickCount());
}
int main (void){
unsigned int lastAttack = 0;
unsigned int lastHeal = 0;
while(true){
if(timePassed(lastAttack, DELAY_ATTACK)){
lastAttack = GetTickCount(); //skill gets executed right now!
//executeAttack();
}
if(timePassed(lastHeal, DELAY_HEAL)){
lastHeal = GetTickCount(); //skill gets executed right now!
//executeHeal();
}
Sleep(50);
}
return 0;
}
|
|
|
03/29/2015, 01:51
|
#6
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
Quote:
Originally Posted by Mahatma
wie oben schon erwähnt is clock() in diesem fall nicht die richtige funktion für den zweck, weil sie nicht die uhrzeit, sondern die verbrauchte cpu-zeit zurückliefert.
um die richtige funktion für dich zu finden solltest du dich zu allererst einmal fragen welche auflösung/genauigkeit du brauchst. reicht es in sekunden aufzulösen oder gibt es eventuell auch skills die weniger als 1 sec cooldown haben und die du deshalb beispielsweise alle 0,5 sec "ausführen" willst....?
für eine sekunden-auflösung würde sich die time() function anbieten, solltest du eine höhere genauigkeit (millisekunden) brauchen, so kannst du unter windows z.b. GetTickCount() oder unter unix gettimeofday() nehmen.
hab dir kurz mal etwas beispielcode geproggt um das ganze bissl zu veranschaulichen (kann aber net garantieren dass er lauffähig ist, weil ich den nur eben im editor geschrieben hab):
PHP Code:
#define DELAY_ATTACK 500 /*time in milliseconds --> 0,5 seconds /* #define DELAY_HEAL 10000 /*time in milliseconds --> 10 seconds /*
bool timePassed(unsigned int lastTime, unsigned int delay){ return ((lastTime + delay) < GetTickCount()); }
int main (void){ unsigned int lastAttack = 0; unsigned int lastHeal = 0;
while(true){ if(timePassed(lastAttack, DELAY_ATTACK)){ lastAttack = GetTickCount(); //skill gets executed right now! //executeAttack(); } if(timePassed(lastHeal, DELAY_HEAL)){ lastHeal = GetTickCount(); //skill gets executed right now! //executeHeal(); } Sleep(50); } return 0; }
|
erstmal danke für den beispielcode, aber jetzt mal zu meinem, ich versteh nicht ganz wo der unterschied ist wenn ich in meinem fall mit time oder clock arbeite, da ich mit meiner berechnung (clock() - st) / CLOCKS_PER_SEC )) auch die sekunden kriege , ich würds nur gerne verständniss halber wissen, danke nochmal
|
|
|
03/29/2015, 03:05
|
#7
|
elite*gold: 281
Join Date: Oct 2007
Posts: 6,248
Received Thanks: 887
|
Quote:
Originally Posted by erfan100
erstmal danke für den beispielcode, aber jetzt mal zu meinem, ich versteh nicht ganz wo der unterschied ist wenn ich in meinem fall mit time oder clock arbeite, da ich mit meiner berechnung (clock() - st) / CLOCKS_PER_SEC )) auch die sekunden kriege , ich würds nur gerne verständniss halber wissen, danke nochmal
|
hab die clock() function ehrlich gesagt selbst noch nie verwendet - hab halt vorhin nen blick auf die funktionsbeschreibung geworfen und dort gelesen dass dir die funktion die "cpu-zeit" zurückgibt die du konsumiert hast - darunter versteh ich die zeit, die dein programm vom scheduler zugeteilt gekriegt hat um aktiv z.b. irgendwelche berechnungen durchzuführen. du kannst die cpu-zeit klarerweise net für irgendwelche timing-zwecke wo es einfach nur um verstrichene zeit geht verwenden. wenn du meinst bzw dir sicher bist, dass dir (clock() - st) / CLOCKS_PER_SEC )) die sekunden seit dem programmstart (oder dergleichen) zurückliefert, dann kanns auch sein dass ich mich irre und/oder die funktionsbeschreibung zu ungenau gelesen hab und dann kannst du die funktion natürlich genauso verwenden.
wenn du dir aber nicht zu hundert prozent sicher bist würde ich aber doch lieber auf GetTickCount() vertrauen, die ist altbewährt und funktioniert mit sicherheit ohne probleme
|
|
|
03/29/2015, 03:12
|
#8
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
Quote:
Originally Posted by Mahatma
hab die clock() function ehrlich gesagt selbst noch nie verwendet - hab halt vorhin nen blick auf die funktionsbeschreibung geworfen und dort gelesen dass dir die funktion die "cpu-zeit" zurückgibt die du konsumiert hast - darunter versteh ich die zeit, die dein programm vom scheduler zugeteilt gekriegt hat um aktiv z.b. irgendwelche berechnungen durchzuführen. du kannst die cpu-zeit klarerweise net für irgendwelche timing-zwecke wo es einfach nur um verstrichene zeit geht verwenden. wenn du meinst bzw dir sicher bist, dass dir (clock() - st) / CLOCKS_PER_SEC )) die sekunden seit dem programmstart (oder dergleichen) zurückliefert, dann kanns auch sein dass ich mich irre und/oder die funktionsbeschreibung zu ungenau gelesen hab und dann kannst du die funktion natürlich genauso verwenden.
wenn du dir aber nicht zu hundert prozent sicher bist würde ich aber doch lieber auf GetTickCount() vertrauen, die ist altbewährt und funktioniert mit sicherheit ohne probleme 
|
also das das die sekunden wiedergibt, da mich ich mir tausend prozent sicher  das problem ist halt nur die neuzuweisung die funzt net :S , aber da gettimecount scheinbar besser funzt, mach ichs jetzt damit , danke sehr
|
|
|
 |
Similar Threads
|
[HELP]Kostümystem clientside grob und funktion für funktion fail..
05/04/2014 - Metin2 Private Server - 2 Replies
Moin ,
ich hab das Kostümystem clientside erst funktion für funktion eingefügt, zeile für zeile aber auch bei "grob einfügen (copy and past) den gleichen scheiß fehler..
0503 15:06:14429 :: CPythonPlayer::SetItemData(dwSlotIndex=5, itemIndex=1289) - Failed to item data
0503 15:06:14430 :: CPythonPlayer::SetItemData(dwSlotIndex=38, itemIndex=41010) - Failed to item data
0503 15:06:14548 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR
|
[S] USA.net E-mail Spammer (Proxy Funktion & Account-listen Abruf Funktion) [B] e*g
04/24/2013 - elite*gold Trading - 0 Replies
Hallo,
Ich Suche einen E-mail Spammbot der mit USA.net E-mail Adressen Arbeitet. den SMTP Herrauszufinden ist ja nicht Wirklich schwer. Er Sollte Proxy Funktionen haben (E-mail via Proxy versenden) Und er sollte eine liste mit Accounts (Format E-mail:Passwort) Einlesen und verwenden Können (Wenn eine E-mail nichtsmehr sendet wird eine 2te Genommen Also aus der Liste)
Hoffe ihr könnt mir da Weiterhelfen ^^ Kontakt Bitte per PN.
|
Hilfe bei Send Funktion mit Stop Funktion
04/02/2011 - AutoIt - 11 Replies
Hallo Elitepvpers
ich habe ein Problem und Mein Problem ist das mein Text einfach weiter schreibt wenn ich mit HotKey verwende... gib es keine Funktion das der Text einmal kommt und nicht wenn man einmal die HotKey das er 10 min das selbe schreibt :confused:
|
Cost of accessing a casted variable vs. assigning the casted variable? (C#)
01/05/2011 - CO2 Programming - 5 Replies
I know that in unmanaged C++, casting is at compile-time, so it's better to avoid the assignment and simply access it for all instances. However, in C#, I have no idea since I'm pretty new to it.
|
Überprüfen ob Variable Eine Variable ist
10/16/2010 - AutoIt - 26 Replies
Hey leute ich wollte fragen ob/wie man überprüfen kann
ob eine Variable eine Variable ist z.b. so
$k = 1
$i = $k
if $i = VARIABLE Then
msgbox(0,'$i ist eine variable!!','')
endif
PS:Wp releast man nochma TuT (z.b. für metin2??)
|
All times are GMT +1. The time now is 20:40.
|
|