Esta interessante função recupera a velocidade de processamento aproximada da CPU:
const 
ID_BIT=$200000; // EFLAGS ID bit 
 
function GetCPUSpeed: Double;
const
DelayTime = 500;
var 
TimerHi, TimerLo: DWORD; 
PriorityClass, Priority: Integer; 
begin 
try 
PriorityClass := GetPriorityClass(GetCurrentProcess); 
Priority := GetThreadPriority(GetCurrentThread); 
 
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS); 
SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL); 
 
Sleep(10); 
asm 
dw 310Fh // rdtsc 
mov TimerLo, eax 
mov TimerHi, edx 
end; 
Sleep(DelayTime); 
asm 
dw 310Fh // rdtsc 
sub eax, TimerLo 
sbb edx, TimerHi 
mov TimerLo, eax 
mov TimerHi, edx 
end; 
 
SetThreadPriority(GetCurrentThread, Priority); 
SetPriorityClass(GetCurrentProcess, PriorityClass);
 
Result := TimerLo / (1000.0 * DelayTime); 
except end; 
end; 
No evento OnClick, basta atribuir a saída da função a uma string:
procedure TForm1.Button1Click(Sender: TObject); 
var cpuspeed:string; 
begin 
cpuspeed:=Format('%f MHz', [GetCPUSpeed]); 
edit1.text := cpuspeed; 
end; 
Nenhum comentário:
Postar um comentário