Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   probema al operar con LARGE_INTEGER (https://www.clubdelphi.com/foros/showthread.php?t=64721)

bactering 15-04-2009 23:52:37

probema al operar con LARGE_INTEGER
 
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.
Código:


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:

Código:

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

Visto esto tienes dos opciones:
Opción 1:
Código:

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:
Código:

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


La franja horaria es GMT +2. Ahora son las 04:34:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi