PDA

Ver la Versión Completa : probema al operar con LARGE_INTEGER


bactering
15-04-2009, 23:52:37
Hola
Como siempre a por ayuda.
No me deja operar cuando intento operar con los datos de QueryPerformanceCounter() y de QueryPerformanceFrequency
Pego el código a ver si me podeis indicar donde meto la pata y su solución.

void __fastcall TMainForm::Button1Click(TObject *Sender)
{
LARGE_INTEGER freq;
LARGE_INTEGER startTime, endTime;
LARGE_INTEGER elapsedTime, elapsedMilliseconds;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&startTime);
// run code here
QueryPerformanceCounter(&endTime);
elapsedTime = endTime - startTime;
elapsedMilliseconds = (1000 * elapsedTime) / freq;;

}

Muchas gracias

escafandra
16-04-2009, 00:18:30
Fijate en el tipo LARGE_INTEGER:

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
LONGLONG QuadPart;
} LARGE_INTEGER;


Visto esto tienes dos opciones:
Opción 1:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LARGE_INTEGER freq;
LARGE_INTEGER startTime, endTime;
LARGE_INTEGER elapsedTime, elapsedMilliseconds;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&startTime);
// run code here
QueryPerformanceCounter(&endTime);
elapsedTime.QuadPart = endTime.QuadPart - startTime.QuadPart;
elapsedMilliseconds.QuadPart = (1000 * elapsedTime.QuadPart) / freq.QuadPart;
}


Opción 2, quizás mas clara:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LONGLONG freq;
LONGLONG startTime, endTime;
LONGLONG elapsedTime, elapsedMilliseconds;
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
QueryPerformanceCounter((LARGE_INTEGER*)&startTime);
// run code here
QueryPerformanceCounter((LARGE_INTEGER*)&endTime);
elapsedTime = endTime - startTime;
elapsedMilliseconds = (1000 * elapsedTime) / freq;;
}


Saludos.

bactering
16-04-2009, 00:30:51
Gracias!!

Jo! no me di cuenta en el detalle´.

Saludos